2008-09-21 50 views
5

我正在CakePHP中創建一個網站,我對它很感興趣。我找不到這方面的資源,所以你去:CakePHP多模式視圖

我有一個三表結構用於註冊用戶:UsersAddressesContacts。我必須建立一個與所有三個表像信息視圖:

 
Full Name:   [   ] (from Users) 
Shipping Address: [   ] (from Address) 
Mobile Phone:  [   ] (from Contact) 
e-Mail Address: [   ] (from Contact) 

什麼是最好的方式來處理這種情況。 特別爲保存。創建一個新的模型來表示這一點,那將有save()方法本身(也許在數據庫的SQL視圖)創建一個控制器來處理這個觀點bind S或unbind小號信息

我想我依然會如何處理兩個聯繫人,因爲他們將2個不同INSERT

任何暗示或資源,我可以挖掘我會很高興。

回答

10

如果您使用的是最新1.2代碼,檢查型號::白水在API

如。你的觀點可能是這個樣子:

echo $form->create('User', array('action' => 'add'); 
echo $form->input('User.name'); 
echo $form->input('Address.line_1'); 
echo $form->input('Contact.tel'); 
echo $form->end('Save'); 

然後在您的用戶控制器添加方法你會碰到這樣的:

... 

if($this->User->saveAll($this->data)) { 
$this->Session->setFlash('Save Successful'); 
$this->redirect(array('action' => 'index')); 
} else { 
$this->Session->setFlash('Please review the form for errors'); 
} 

... 

在用戶模式,你需要這樣的:

var $hasOne = array('Address', 'Contact'); 

希望有幫助!

http://api.cakephp.org/class_model.html#49f295217028004b5a723caf086a86b1

4

CakePHP允許您使用關係輕鬆維護模型之間的鏈接,有關完整的細節,請參閱http://book.cakephp.org/view/78/Associations-Linking-Models-Together。然後取回正確的用戶,您還可以免費獲得其地址和聯繫信息。

+0

嗨。我改變了我的問題以反映我的意圖,如何保存,我如何創建註冊控制器和視圖 – 2008-09-21 13:09:22

1

3個型號:用戶,地址,聯繫

User hasOne Address, Contact 
Address belongsTo User 
Contact belongsTo User 
在模型中

你定義了這個是這樣的:

class User extends AppModel { 
var $name = 'User'; 
var $hasOne = array('Address','Contact'); 
.. 

爲了使這個觀點,你需要user_id字段ind 個地址接觸

在視圖中使用此功能,您只需撥打一個找到的用戶模型之一的遞歸(順便說一句,並,用戶控制器僅使用用戶模式)。

$this->User->recursive = 1; 
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666))); 

這將導致該陣列中的視圖:

array(
    'Use' => array(
    'id' => 666, 
    'name' => 'Alexander' 
), 
    'Address' => array(
    'id' => 123, 
    'zip' => 555 
), 
    'Contact' => array(
    'id' => 432, 
    'phone' => '555-1515' 
));