Clone wiki

plugsystem / Плагины и как они устроены

В этой записи постараюсь рассказать как устроены плагины.

Если структурно то сам плагин имеет следующую структуру

/nameplugin/config.php главный файл где прописываются параметры плагина

/nameplugin/controllers/backend/Nameplugin.php - контроллер backend

/nameplugin/controllers/frontend/Nameplugin.php - контроллер backend

/nameplugin/controllers/cron/Nameplugin.php - контроллер backend

/nameplugin/config.php

<?php
namespace plugins\nameplugin;

use plugsystem\models\AbstractConfig;

class config extends AbstractConfig
{
    public function __construct()
    {
        parent::__construct("nameplugin", "routeplugin", true);

    }
}

Когда мы указываем второй параметр в конструкторе как routeplugin ,то плагин будет доступен по следующему URL http://site.ru/routeplugin/ Для backend менеджера http://site.ru/pathtoadmin/routeplugin/

Пример frontend контроллера

/nameplugin/controllers/frontend/Nameplugin.php

<?php


namespace plugins\nameplugin\controllers\frontend;



class Nameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

/nameplugin/controllers/frontend/SecondNameplugin.php

<?php


namespace plugins\nameplugin\controllers\frontend;



class SecondNameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

При переходе по ссылке http://site.ru/routeplugin/test будет вызываться Nameplugin с методом actionTest При переходе по ссылке http://site.ru/routeplugin/secondtest будет вызываться SecondNameplugin с методом actionTest

Пример backend контроллера

/nameplugin/controllers/backend/Nameplugin.php

<?php


namespace plugins\nameplugin\controllers\backend;



class Nameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

/nameplugin/controllers/backend/SecondNameplugin.php

<?php


namespace plugins\nameplugin\controllers\backend;



class SecondNameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

При переходе по ссылке http://site.ru/pathtoadmin/routeplugin/test будет вызываться Nameplugin с методом actionTest При переходе по ссылке http://site.ru/pathtoadmin/routeplugin/secondtest будет вызываться SecondNameplugin с методом actionTest

Пример cron контроллера

/nameplugin/controllers/cron/Nameplugin.php

<?php


namespace plugins\nameplugin\controllers\cron;



class Nameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

/nameplugin/controllers/cron/SecondNameplugin.php

<?php


namespace plugins\nameplugin\controllers\cron;



class SecondNameplugin extends \plugsystem\core\FrontendController
{
    public function actionTest()
    {
        echo "test";
    }
}

Для вызова Nameplugin с методом actionTest необходимо использовать /yii hello/index /routeplugin/test

Для вызова SecondNameplugin с методом actionTest необходимо использовать /yii hello/index /routeplugin/second/test

Updated