CakePHP从视图中重定向到其他url

CakePHP从视图中重定向到其他url,php,cakephp,cakephp-1.3,Php,Cakephp,Cakephp 1.3,我想从view.ctp重定向到其他视图 假设这样=> if($val == 0 ) { redirec to 'posts/index' } 如何执行此操作?您在控制器中执行重定向,而不是在视图中执行重定向。期间。 您可以轻松地在控制器的视图中执行相同的检查 我不知道您的具体情况,但我通常使用以下模式: public function view($id) { $post = $this->Post->find('first', array( 'condi

我想从view.ctp重定向到其他视图

假设这样=>

if($val == 0 ) {
  redirec to 'posts/index'
}

如何执行此操作?

您在控制器中执行重定向,而不是在视图中执行重定向。期间。
您可以轻松地在控制器的视图中执行相同的检查

我不知道您的具体情况,但我通常使用以下模式:

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'));
}

这样,您需要执行的检查在数据库级别(如果它属于)进行处理,重定向/错误在控制器(如果它属于)中进行处理。视图在请求周期中太晚了,无法检查业务逻辑,如“是否允许用户查看此内容?”,视图的任务只是输出信息。

,但在控制器中执行。从视图重定向的原因是什么?我有一个列标记。如果标记=0,则不显示post。如果我这样做,将显示空白的白色页面,但为此,我想重定向到其他操作。我不需要显示白色的空白页面。如果postid=1的标记为0,则无法点击以显示post。如何执行此操作?您应该已经知道控制器中的mark是否为0。如果不是,则说明您的设计有问题。“mark”是posts and comments表中的一列