Задать вопрос

Phalcon beforeexecureroute?

Всем привет.
У меня вопрос по Phalcon'у, если точнее — методах, которые должны сработать перед запуском действия и после него.

Есть следующее:
class ControllerBase extends \Phalcon\Mvc\Controller
{

    public function beforeExecuteRoute($dispatcher)
    {
               echo 'beforeExecute';
        }
    }


class SomeController extends ControllerBase {  public function index(){ echo 'Test'; }  }


у меня микроприложение, поэтому имя метода не indexAction

Когда я запускаю приложение example.com/some
Я получаю только test, а ожидаю получить beforeExecute test

Где ошибаюсь?
Спасибо
  • Вопрос задан
  • 3415 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Вывода в данной функции (событии) не будет - такова особенность.
Проверить происходит событие или нет, можно так:
class ControllerBase extends \Phalcon\Mvc\Controller
{
     public $p='N';
    public function beforeExecuteRoute($dispatcher)
    {
    $this->p='Y';
        }
    }


class SomeController extends ControllerBase {  public function index(){ echo 'Test '.$this->p; }  }
Ответ написан
kompi
@kompi
nullstack devoops
beforeExecuteRoute всегда выводит данные для view контроллера по умолчанию. У других любых контроллеров свой контекст, который перекрывает контекст по умолчанию.

Для вывода в любом view:
public function beforeExecuteRoute()
    {
        $this->view->setVar('param', 'ExecuteRoute');
    }

Соответственно в нужном view вызывайте $param.
Ответ написан
kompi
@kompi
nullstack devoops
Можно попробовать альтернативный вариант:
$app = new \Phalcon\Mvc\Micro();
$eventsManager = new \Phalcon\Events\Manager();
$eventsManager->attach('dispatch:beforeExecuteRoute', 
    function($event, $dispatcher, $exception) {
           throw new \Phalcon\Exception('Fired up!');
    });
$dispatcher = new \Phalcon\Mvc\Dispatcher();
$dispatcher->setEventsManager($eventsManager);
$app->setService('dispatch', $dispatcher);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы