#controller #yii #file-location
#контроллер #yii #расположение файла
Вопрос:
В Yii, при доступе к <app-host>/index.php?r=<mycontroller>/<myaction>
, фреймворк начнет запускать код в protected/controller/<MyController>Controller.php
Я хочу, чтобы этот код находился в другой папке, говорит protected/anotherFolder
, в то время как другие контроллеры остаются как есть. Как это сделать?
С уважением
Комментарии:
1. почему вам нужно изменить расположение папки контроллеров из встроенной в Yii?
2. Как указал Кор, я хотел бы сгруппировать логику в свою собственную папку. «Логика» включает контроллер / представление / модель. Модуль отвечает моим потребностям.
Ответ №1:
Откройте <app-host>/index.php
, отредактируйте, чтобы
//...
require_once($yii);
$app = Yii::createWebApplication($config);
$app->setControllerPath('protected/anotherFolder');
$app->run();
Комментарии:
1. Спасибо, Элван. Но это изменит все контроллеры. Мне это нужно только для некоторых из них
Ответ №2:
Благодаря mdomba
на форуме yii в этом сообщении я нашел ответ, используя CWebApplication::controllerMap
— в состоянии загрузки приложения, которое мы вызываем
Yii::app()->controllerMap['yourControllerName']='path.alias.to.your.controller.file.without.dotPHP';
Вы можете использовать controllerMap — http://www.yiiframew…ollerMap-detail
Ответ №3:
Если я вас понял, вы хотите разделить веб-логику на разные «папки» или (более простым способом) модули. Например, перенести все административные функции в другое место и получить доступ к этому, например, используя r = admin / users
Если у вас активирован менеджер gii, перейдите в /index.php?r=gii и создайте модуль. Вот и все. Затем вы можете создавать контроллеры внутри protected/modules/ <module-name>
/ controllers/ и вызывать их по этому пути. Конечно, представления также хранятся внутри этого
Комментарии:
1. Ты меня хорошо понял. Хотя применение a
module
сильно изменит структуру моего кода
Ответ №4:
Вы можете добавить в конфигурационный файл
'controllerPath' => 'your_new_controller_path',
То же самое с путем просмотра
'viewPath' => 'path_to_template_folder',