Использование requestAction в файле ctp и вместо него получилась пустая страница - PullRequest
0 голосов
/ 21 июля 2010

Я использую cakePHP 1.26.
Веб-страница оказалась пустой, когда я попытался использовать requestAction для доступа к функции в контроллере из .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";
    }
?>

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

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

Ответы [ 3 ]

1 голос
/ 23 июля 2010

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

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

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

1 голос
/ 18 февраля 2012

Я новичок в 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

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

1 голос
/ 21 июля 2010

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

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

...