jalendport/craft-base

Shared foundation for jalendport Craft CMS plugins

Maintainers

Package info

github.com/jalendport/craft-base

Documentation

pkg:composer/jalendport/craft-base

Transparency log

Fund package maintenance!

jalendport

Statistics

Installs: 38

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

1.1.1 2026-07-16 16:57 UTC

This package is auto-updated.

Last update: 2026-07-16 17:55:12 UTC


README

Base

Base

The shared foundation under every jalendport Craft CMS plugin.

Features

  • Base Plugin class — extend jalendport\base\Plugin instead of craft\base\Plugin and get everything below for free.
  • Per-plugin logging — each plugin writes its own storage/logs/<handle>-*.log, with MyPlugin::info() / ::warning() / ::error() static helpers.
  • Controller traitsrunAndReturn() for web controllers (success/failure responses done right) and runAndExit() + output helpers for console controllers.
  • Settings helpers — a configWarning() Twig macro that flags settings overridden in config/<handle>.php, plus getConfigOverrides() for disabling the fields a config file has taken control of.
  • Testing helpers — settings factories and an in-memory cache for unit-only Pest suites.

Usage

use jalendport\base\Plugin;

class Altcha extends Plugin
{
    public static Altcha $plugin;

    public function init(): void
    {
        parent::init(); // registers the log target, @altcha alias, shared template root
        self::$plugin = $this;

        $this->registerEventHandlers();
    }
}

Flag and disable the settings a config file has overridden:

protected function settingsHtml(): ?string
{
    return Craft::$app->getView()->renderTemplate('altcha/settings', [
        'settings' => $this->getSettings(),
        'overrides' => $this->getConfigOverrides(),
    ]);
}
{% import 'jalendport-base/_macros' as base %}

{{ forms.lightswitchField({
    label: 'Enabled'|t('altcha'),
    name: 'enabled',
    on: settings.enabled,
    disabled: 'enabled' in overrides,
    warning: base.configWarning('enabled', 'altcha'),
}) }}

Support

Found a bug or have a question? Open an issue.

Made by Jalen Davenport

Icon: base by Lars Meiertoberens from Noun Project (CC BY 3.0)