2013-06-04 84 views
2

我使用CakePHP 2.x和CakeDC用戶插件。我試圖通過將下面的代碼放在我的AppController的beforefilter()中讓變量*'editprofile'和'profile_area_pic'可供所有控制器使用 - 此代碼允許我顯示用戶配置文件圖片並且工作正常,直到您嘗試註冊用戶並給出以下內容錯誤:使CakePHP 2.x中的所有控制器都可用變量

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第1行'register'附近使用正確的語法。

是否有人對如何使這些變量可用有更好的瞭解?提前致謝。

///////////// *在下面給出變量//////////////////////////// ///////////////

$this->loadModel('Profile'); 
$profileedit = $this->Auth->User('id'); 
$editprofile = $this->Profile->find('first',array(
           'conditions'=>array('Profile.user_id'=>$profileedit), 
           'fields'=>array('id'))); 
$this->set(compact('editprofile')); 

$this->loadModel('Profile'); 
$profileuse = $this->Auth->User('id'); 
$profile_area_pic = $this->Profile->find('first',array(
        'conditions'=>array('Profile.user_id'=>$profileuse), 
        'fields'=>array('photo'))); 
$this->set(compact('profile_area_pic')); 
+0

請不要使用1.3和2.x標記它 - 只選擇適用的主要版本!另外,爲什麼loadModel()兩次?一旦裝載完畢,就不需要在同一個地方再做一次。 – mark

+0

感謝馬克,注意到,並請忽略第二個loadModel() – Joshua

回答

1

實現你想要做的更好的方法是這樣的:

function beforeFilter() { 
    if (!in_array($this->action, array('register','any_other_action', 
'here')) { 
    // Do your authentication or your profile query 
    } 
} 

只是試圖改變按您需要在過濾前辦理入住手續,這一定會對您有所幫助。

+0

使用此實現顯示配置文件圖片但仍然引發同樣的錯誤,當註冊用戶,任何其他建議? – Joshua

+0

哪個錯誤即將到來?有沒有認證錯誤? – liyakat

+0

請看http://stackoverflow.com/questions/16999502/saving-data-to-user-model-from-profile-model-cakephp在此先感謝liyakat – Joshua

1
function beforeFilter(){ 
    $this->set('editprofile', $this->_edit_profile()); 
} 

function _edit_profile(){ 
    if($this->Auth->user('id')){ 
     $this->loadModel('Profile'); 
     $editprofile = $this->Profile->find('first',array(
     'conditions'=>array('Profile.user_id'=>$this->Auth->user('id')), 'fields'=>array('id')) 
    ); 
     if (!$editprofile || empty($editprofile)) return false; 
     return $editprofile; 
    } 
    return false; 
} 
+0

$ profileedit變量是否包含任何數據? – Joshua

+0

它會存儲'$ this-> Profile-> find('first',array( 'conditions'=> array('Profile.user_id'=> $ profileedit),'fields'=> array(' '')) );'如果它可用 –

+0

我剛剛重讀你的評論,並調整了答案爲'$ this-> Auth-> user('id')' –

相關問題