在ctp文件中使用requestAction,结果却是一个空白页面

时间:2010-07-21 15:30:13

标签: cakephp cakephp-1.2

我正在使用cakePHP 1.26 当我尝试使用requestAction从.ctp访问COntroller中的函数时,网页变为空白。
这是代码:

<?php
class TestingController extends AppController {

 function hello($id=null){

           $IfLoggedIn=$this->Session->check('user');

           if($IfLoggedIn){
            //search the database
            //$result=doing something from the search results
            $this->set('userInfo',$result);
            return "2";
           }

           else if(!$IfLoggedIn && $id!=null){
           return "1";
            }

           else if($id==null){
           return "0";
            }
    }
}

然后在default.ctp文件中,我使用了上面定义的函数:

<?php
    $u = $this->requestAction('/hello'); 
    if($u=="2"){
    echo "welcome back, my friend";
    }
    else{
    echo "Hello World";
    }
?>

但是当我加载网页时,它是空白页。

我不知道代码中有什么问题。

3 个答案:

答案 0 :(得分:1)

您可以尝试在controllerAction的url参数中包含控制器。

如果您花更多时间调试和阅读手册,您将会更快,更快地了解。

答案 1 :(得分:1)

尝试添加

$u = $this->requestAction('/hello', array('return'=>true));

Check this

答案 2 :(得分:1)

我自己是Cakephp的新手,我使用的是2.0,你的Cake版本可能会有所不同。

我发现手册中的以下代码对我来说是错误的:

<?php
class PostsController extends AppController {
    // ...
    function index() {
        $posts = $this->paginate();
        if ($this->request->is('requested')) {
            return $posts;
        } else {
            $this->set('posts', $posts);
        }
    }
}

您需要稍作修改(在这种情况下,手册似乎是错误的)。以下代码对我有用:

<?php
class PostsController extends AppController {
    // ...
    function index() {
        $posts = $this->paginate();
        if ( !empty($this->request->params['requested'])  )  { // line here is different
            return $posts;
        } else {
            $this->set('posts', $posts);
        }
    }
}

我们不应该检查请求HTTP动词,我们应该检查请求参数是否为true。

以下是有关请求参数的手册的另一个相关链接:http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-request-parameters

希望有所帮助。