Вы делаете перенаправление в контроллере, а не в представлении. Период.
Вы можете легко выполнить ту же проверку, что и в представлении в контроллере.
Я не знаю о вашей конкретной ситуации, но я обычно использую этот шаблон:
public function view($id) {
$post = $this->Post->find('first', array(
'conditions' => array('Post.id' => $id, 'Post.mark' => 1)
));
if (!$post) {
$this->cakeError('error404');
// or redirect, or show a more specific error page, or do something else
}
$this->set(compact('post'));
}
Таким образом, проверка, которую вам нужно сделать, обрабатывается на уровне базы данных, где бы она ни находилась, а перенаправление / ошибка обрабатывается в контроллере, где бы она ни находилась. Представление слишком поздно в цикле запроса, чтобы проверить на наличие бизнес-логики, например «действительно ли пользователю разрешено это видеть?» , работа представления заключается только в выводе информации.