2012-11-20 56 views
0

我在CakePHP的模型中創建了自定義驗證函數。在閱讀過類似的問題之後,我瞭解到我可以使用ClassRegistry::init('Model');在當前模型中加載外部模型。但是它並沒有多說關於句法以及之後如何實際使用它的內容。這是我試過的,但是當我試圖打印數組以查看它是否包含正確的東西時,沒有任何「正在發生」。基本上我想拉出用戶數據在我的驗證中使用它。CakePHP - 在當前模型中使用不同的模型

class Booking extends AppModel { 

    public $name = 'Booking'; 

    public $validate = array(
     'start_time' => array(
      'noOptionViolation' => array(
       'rule' => 'noOptionViolation', 
       'allowEmpty' => false 
      ) 
     ), 
    ); 

    public function noOptionViolation ($start_time) { 

     $this->User = ClassRegistry::init('User'); 
     $allUsers = $this->User->find('all'); 
     print_r($allUsers); 


    } 

這是正確的語法嗎?我可以像使用控制器一樣使用$ this-> User的所有方法嗎?

+0

其實,事情是發生在負荷模型

$this->loadModel('User'); 

,並訪問所有功能。 '$ allUsers'包含預期的數據,就像在控制器中一樣。因此,這似乎是將外國模型數據提取到當前模型的一種簡單方法。它只留下了我是否可以訪問所有正常模型方法的問題。可能是。 – alieninlondon

回答

0

可以使用導入對這個職位詳見: https://stackoverflow.com/a/13140816/1081396

App::import('Model', 'SystemSettings.SystemSetting'); 
$settings = new SystemSetting(); 
$mySettings = $settings->getSettings(); 

在你的榜樣它會像:

App::import('Model', 'Users.User'); 
$user = new User(); 
$allUsers = $user->find('all'); 
print_r($allUsers); 

你可以更好地在開始時使用進口該模型。

+0

感謝您的回答,如果我使用「我的示例模型」,那麼您的語法將如何? – alieninlondon

+0

我編輯了我的回覆。 – Alvaro

0

您可以使用此也通過

$this->User