Как остановить выполнение запроса в Kohana? - PullRequest
2 голосов
/ 25 сентября 2010

Допустим, у меня есть шаблон контроллера с функцией before, например ...

public function before()
  {
     parent::before();
     if ($this->request === Request::instance()) 
     {
         // its a main request, throw an exception or redirect
         Request::instance()->redirect('/');
     }
     else
     {
        // ok
     }
  }

Но допустим, я не хочу перенаправлять, я хочу остановить поток запросов и ничего не делать.

Исключение делает это? Есть ли простой способ, как Request::die();?

РЕДАКТИРОВАТЬ :: Я на самом деле не хочу останавливать поток запросов, просто запретить этому контроллеру что-либо делать. Вероятно, этот контроллер был вызван из другого контроллера, и я хочу передать управление обратно вызывающему контроллеру. '

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

1.Использование исключений (еще не проверено):

try
(
   Request->instance()->execute();
}
catch (MyRequest_Exception $e)
{
   // do what you want
}

echo Request->instance()->send_headers->response();

// somewhere in before()
if ($error)
{
   throw new MyRequest_Exception($errortext);
}
  1. Изменить имя действия:

    $ this-> request-> действие ( 'забвение'); // перенаправляет на действие "забвение", которое ничего не делает

0 голосов
/ 25 сентября 2010

Вы можете установить переменную класса в before() скажем:

$this->execute = false;

Тогда в вашем действии:

public function action_example()
{
    if (!$this->execute) return;
    // etc
}
...