На самом деле вы можете повторно использовать классы контроллера внешнего интерфейса в бэкэнде - вы можете использовать controllerMap
свойство приложения или модуля для определения пользовательских классов контроллера. Например, если вы добавите что-то подобное в вашу конфигурацию бэкэнда:
'controllerMap' => [
'mycontroller' => 'frontend\controllers\SomeController',
],
Тогда frontend\controllers\SomeController
будет действовать так, как если бы backend\controllers\MycontrollerController
- backend.local/mycontroller
будет использовать тот же контроллер, что и frontend.local/some
, но с другим контекстом (и, возможно, макетами).
Вы даже можете использовать controllerNamespace
для загрузки всех контроллеров из заданного пространства имен. Например, создайте отдельный модуль в бэкэнде:
namespace backend\modules;
class FrontendModule extends \yii\base\Module {
public $controllerNamespace = 'frontend\controllers';
}
Тогда этот модуль будет использовать все контроллеры внешнего интерфейса в контексте сервера. backend.local/frontend/some
будет использовать frontend\controllers\SomeController
.