2010-07-21 42 views
0

我正在使用cakePHP 1.26。
當我嘗試使用requestAction從.ctp訪問控制器中的函數時,網頁變爲空白。
下面是代碼:
在ctp文件中使用requestAction,它變成了空白頁代替

<?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.thtml中的文件,我利用了功能的上述定義的:

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

但是,當我打開一個網頁,它是空白頁。

我不知道代碼中出了什麼問題。

+0

將您的調試級別設置爲3併發布輸出的錯誤。我懷疑這個頁面是空白的b/c你壓制錯誤,我們需要幫助調試。謝謝! – 2010-07-21 16:06:41

回答

1

嘗試添加

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

Check this

1

您可以嘗試在requestAction的url參數中包含控制器。

如果您花費更多時間調試和閱讀手冊,您將更快速地瞭解更多信息。

1

我是新來CakePHP的自己,我使用的是2.0這可能是你的蛋糕的版本不同。

我發現,從手動下面的代碼是錯誤的,我說:

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

希望有所幫助。