阻止直接访问动作控制器

时间:2012-02-16 10:55:15

标签: php zend-framework

我正在使用zend框架。在视图中,我使用动作助手。

echo $this->action('info', 'comment', null, array('articleID' => $article->arti_id));

因此,帮助者调用'CommentController'类和方法'infoAction'。在我的方法中,我得到'articleID'参数,然后我开始使用模型进行处理。最后,我渲染了一个共享视图。

public function infoAction() {
    $articleID = $this->getRequest()->getParam('articleID');
    // Working with model
            // .....
    $this->renderScript('/View/Script/DefaultComment.phtml');
}

它工作得很好,但我不希望网址domain.com/comment/info直接访问此控制器/操作。

我该如何避免这种情况?

THX

1 个答案:

答案 0 :(得分:3)

如果您的操作方法始终使用文章ID参数调用,那么您可以重定向请求,以防没有ID:

public function infoAction() {
    if ($this->_hasParam('articleID')) {
        $articleID = $this->getRequest()->getParam('articleID');
        // Working with model
            // .....
    $this->renderScript('/View/Script/DefaultComment.phtml');
    } else {
        $this->_helper->redirector('index', 'index', 'default');
    }
}