cakephp禁用直接访问控制器

时间:2013-09-07 03:08:58

标签: cakephp controller element

我是新手使用cakephp2, 我使用element + requestAction在我网站的某个页面上显示一个新闻块,如下所示:

news.ctp

<?php
$news = $this->requestAction('controller'=>'News','action'=>'load');

foreach($news as $itm){
    echo $itm['title];
    //...
}

NewsController.php

<?php
//...
public function load(){
    //...
    return $data;
}

它运作良好,我的问题是

如何禁用直接访问,如:http://domain/News/load

如果是制作内容块的好方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

在您的控制器中,您可以尝试这样做以防止直接访问。

public function load(){
    if (empty($this->request->params['requested'])) {
        $this->redirect($this->referer());
    }
    return $data;
}

如果使用requestAction而没有缓存,则requestAction可能会导致性能下降。它很少适用于控制器或模型。检查here

有关详细信息,请查看文档here