2012-06-20 94 views
0

我有一個非常奇怪的事情在這裏進行。我檢查AppController的beforeFilter()函數,是否存在id。它在我打開url/project/user/1時工作,但當我打開/ project/user/edit/1時,它說我在非對象上使用了一個函數。我已經檢查過我是否真的這樣做,但我沒有。我用pr()輸出值,它顯示對象內容。呼叫非對象的成員函數,雖然對象存在

這裏是我的beforeFilter()函數:

$request = $this->request; 

if (isset($request->params['id'])) { 
      $model = Inflector::singularize(ucfirst($request->params['controller'])); 
      $cond = array('conditions' => array($model . '.id' => $request->params['id'])); 
      pr($this->{$model}); 
      exit; 
      if (!$this->{$model}->find('first', $cond)) { 
       $this->Session->setFlash(__('Invalid id.'), 'flash_notice'); 
       $this->redirect(array(
        'manager' => (bool)$request->params['manager'], 
        'controller' => 'tournaments', 
        'action' => 'index' 
       )); 
      } 
     } 

$模型的輸出,該ID條件被執行之前,包含對象數據,是absolutley正確。我沒有看到問題:/

你能幫助我嗎?

謝謝。

+0

什麼功能?什麼對象('var_dump()'它)?什麼線? –

+1

什麼是確切的錯誤信息? – deceze

+0

如果錯誤消息說它是非對象,那麼它是。 – xdazz

回答

0

好,我得到了錯誤......

的代碼只是簡單的不工作,當您打開URL有一些其他錯誤,例如數據庫連接錯誤。這是我很難解釋,但是當我刪除上面的代碼,打開我的網址這樣的錯誤來了:

Database Error

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'isAdmin' at line 1

當我固定的錯誤,上面的代碼工作正常。

相關問題