我正在使用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";
}
?>
但是当我加载网页时,它是空白页。
我不知道代码中有什么问题。
答案 0 :(得分:1)
您可以尝试在controllerAction的url参数中包含控制器。
如果您花更多时间调试和阅读手册,您将会更快,更快地了解。
答案 1 :(得分:1)
答案 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
希望有所帮助。