Использование requestAction в файле ctp и вместо этого получилась пустая страница

Я использую cakePHP 1.26.
Веб-страница оказалась пустой, когда я попытался использовать requestAction для доступа к функции в COntroller из .ctp.
Вот код:

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

Но когда я загружаю веб-страницу, это была пустая страница.

Я понятия не имею, что не так в коде.


person user327712    schedule 21.07.2010    source источник
comment
Установите уровень отладки на 3 и опубликуйте, какие ошибки выводятся. Я подозреваю, что страница пуста, потому что вы подавляете ошибки, которые нам нужны для отладки. Спасибо!   -  person Travis Leleu    schedule 21.07.2010


Ответы (3)


Попробуйте добавить

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

Проверьте это

person Nik Chankov    schedule 22.07.2010

Вы можете попробовать включить контроллер в параметр URL-адреса requestAction.

Если вы потратите больше времени на отладку и чтение руководства, вы узнаете больше и быстрее.

person Leo    schedule 21.07.2010

Я новичок в 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-глагол запроса, мы должны проверять, является ли параметр запроса истинным.

Вот еще одна релевантная ссылка на руководство по параметрам запроса: http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-request-parameters

Надеюсь, это поможет.

person Curt Mullin    schedule 17.02.2012