Я пытаюсь написать пользовательское расширение для рамки yii, и я не могу получить доступ к контроллеру, который хранится в папке расширения/контроллеров. Я много искал, но я не нашел для этого никакого намека. Это структураyii extensions: как получить доступ к контроллеру, который находится внутри расширения
protected
-- extensions
-- XYZ (Extension's name)
-- assets
-- controllers
-- XYZController.php
-- models
-- XYZModel.php
-- widgets
-- views
-- form.php
-- XYZWidget.php
Я сделал все настройки, необходимые для загрузки расширения и в настоящее время я могу отобразить форму из папки просмотры с помощью $ this-> renderInternal («просмотров/form.php»). Таким образом, расширение загружается успешно. Проблема возникает, когда я пытаюсь получить доступ к контроллеру внутри папки расширений.
Обычно, когда нужно получить доступ, например, к методу индекса внутри защищенных/контроллеров/SiteController.php, тогда URL-адрес равен http://project.com/index.php/site/index «Поэтому, что я должен писать в действии формы для доступа к любому методу в/extensions/controller/XYZController .php из формы.
Я добавил этот фрагмент кода в main.php, как это было написано в различных рекомендациях
'controllerMap'=>array(
'XYZ'=>array(
'class'=> 'XYZ.controllers.XYZController',
),
),
конфигурации/main.php файлов
Yii::setPathOfAlias('XYZPath', realpath('protected') . '/extensions/AQ');
return array(
-------
-------
'preload'=>array('log', 'XYZ'),
// autoloading model and component classes
'import'=>array(
'application.models.*',
'application.components.*',
'application.extensions.XYZ.controllers.*',
'application.extensions.XYZ.models.*',
'application.extensions.XYZ.widgets.*',
),
'controllerMap'=>array(
'XYZ'=>array(
//'class'=> 'XYZPath.controllers.XYZController',
'class'=> 'extensions/XYZ/controllers/XYZController',
),
),
-------------
-------------
)
Просьба дать мне какой-либо намек на эту ситуацию. Спасибо заранее.
Вы пишете компонент приложения (http://www.yiiframework.com/doc/guide/1.1/en/extension.create#application-component) или модуль (http://www.yiiframework.com/doc/ руководство/1,1/ен/extension.create # модуль)? Если ни один из них, просто импортируйте 'extensions.XYZ.controllers. *' В свой файл конфигурации. –
Я сделал это как «application.extensions.XYZ. *», Поэтому все в папке XYZ должно быть включено. – johannesMatevosyan
Yii не импортирует классы из подпапок рекурсивно, поэтому вы должны включать классы из 'controllers', используя полный псевдоним папки. –