在 ctp 文件中使用 requestAction 结果却变成了空白页

发布于 2024-09-10 23:38:34 字数 925 浏览 4 评论 0原文

我使用 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";
    }
?>

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

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

I am using cakePHP 1.26.
The web page turned out blank when I tried to use requestAction to access a function in a COntroller from a .ctp.
Here is the code:

<?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";
            }
    }
}

and then in default.ctp file, I made use of the function defined above:

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

But when I load a web page, it was blank page.

I have no idea what's wrong in the code.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

玩套路吗 2024-09-17 23:38:34

尝试添加

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

检查此

Try to add

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

Check this

澜川若宁 2024-09-17 23:38:34

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

如果您花更多时间调试和阅读手册,您将学到更多、更快。

You might try including the controller in the url param of requestAction.

If you spend more time debugging and reading the manual, you'll learn more, more quickly.

逆蝶 2024-09-17 23:38:34

我自己是 Cakephp 的新手,我使用的是 2.0,这可能与您的 Cakephp 版本有所不同。

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

<?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

希望有所帮助。

I'm new to Cakephp myself, I'm using 2.0 which may be different in your version of Cake.

I found that the following code from the manual was wrong for me:

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

You need a slight modification (seems the manual was wrong in this case). The following code worked for me:

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

We shouldn't be checking for the request HTTP verb, we should be checking if the request parameter is true.

Here's another relevant link to the manual about request parameters: http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-request-parameters

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文