Допустим имеем контроллер Admin и имеем модуль test, в котором есть контроллер AdminTest. Как в контроллере приложения Admin вызват контроллер из модуля?
Прописать в методе контроллера actions внешнее действие с путем до контроллера очень негибко получается, т.е что-то типа:
public function actions() {
return array(
'modulController' => 'application.modules.tes.controllers.admintest'
);
}
public function somfFunc() {
$this->run('modulController')
}
Как еще можно взаимодействовать разным контроллерам?
описаннім Вами способом запускаю action из другого контроллера. Все прекрасно работало до момента пока не решил єтот єкшн оформить в виде отдельного класса.
создаю в отдельном файле класс действия
class ActionContact extends CAction {
public function run() {
... код action
}
}
переопределяю метод actions() в классе контроллера
class SiteController extends CController {
public function actions(){
return array(
'contact' => 'application.controllers.content.actioncontact',
);
}
}
затем в нужном мне месте візіваю єтот єкшн (в конкретном случае єтопроисходит из view
Я думаю можно в .htaccess правило написать. Сейчас с такой же проблемой столкнулся…отпишу потом…
И еще…я сделал админку сайта так же, как описано в Organize directories for applications with front-end and back-end. Теперь получается, что чтобы пользователю попасть в админку, ему придется авторизовываться через backend.php. Естественно если этот пользователь имеет доступ к админке он войдет. А если помимо админки пользователю необходимо авторизоваться и на самом сайте, получается, что придется логиниться и там и там…Это не очень хорошо, с точки зрения сквозной авторизации. И думаю выхода из этой ситуации нет, так как имеем две разные точки входа…
UPD: Вот что надо указать в .htaccess, чтобы сделать backend доступным по адресу somesite/admin