2013-08-06 56 views
-1

我是CakePhp的新手。我有一個用戶控制器和記錄控制器在我的蛋糕中。用戶控制器正在保存用戶的詳細信息,如用戶名等。記錄控制器正在保存用戶的其他記錄。 Records Controller有一個ctp文件。在這個文件中,我有一個下拉列表,顯示用戶控制器中的所有用戶名。用戶正在從下拉列表中選擇他的名字。名爲checkin的按鈕也在那裏。現在我想在用戶點擊CheckIn按鈕時根據用戶選擇將用戶的ID保存在數據庫中。這個怎麼做 ?CakePhp:根據用戶選擇保存用戶ID

這是我記錄控制器功能

function record() 
{ 
$this->loadModel('User'); 
$rec = $this->User->find('list', array('fields'=> array('User.user_id','User.username'))); 
    $this->set(compact('rec')); 
    $this->Record->saveField('in',date("H:i:s")); 
    } 
    } 
    ?> 

查看文件

<?php 
    echo $this->Form->input('Select User', array('type'=>'select','options' => $rec,'empty'=>false)); 
    echo $form->end('CheckIn');?> 
+0

我想保存在數據庫中具有記錄命名錶的記錄模型中。 – Arsh

+0

我想現在設計不在1個月後。感謝您的寶貴意見。從現在開始,請不要評論我的問題,因爲我不想在這裏給出答案而不是建議。 – Arsh

回答

1

你應該採取1 -------的建議,學習的CakePHP的基本知識,你獲得成功前並且這將阻止你在未來的這些點上陷入困​​境。你的問題缺乏必要的細節,所以我要做出假設。

當您撥打save()時,您只需將用戶ID傳遞給用戶模型即可。如果您有選擇元素來選擇用戶名,我建議您這樣做:

<select> 
    <option value="1">First user</option> 
    <option value="2">Second user</option> 
</select> 

其中選項的值是用戶標識的。然後,確保$this->request->data陣列正確地表示數據字段:

Array 
(
    [User] => Array 
    (
     [id] => 1 // From the select element on the form 
     [isername] => 'Updated username' 
    ) 
) 

當你調用$this->User->save($this->request->data);蛋糕會知道你要更新記錄,因爲你的ID通過。

+0

感謝您的回答。用戶從下拉列表中選擇他的名字。現在我想將他的UserId傳遞給記錄控制器,而不是傳遞給用戶控制器。 – Arsh

1
$rec = $this->User->find('list', array('fields'=> array('User.user_id','User.username'))); 

您不必爲列表查詢定義字段。如果模型具有顯示標題集,那麼將使用該字段。

class User extends AppModel 
{ 
    //... 
    var $displayField = 'username'; 
} 

// then in your controller 
$this->set('users',$this->User->find('list')); 

在您的視圖中創建這些用戶的下拉選擇。您使用內置的select()函數。

$this->Form->select('user_id',$users); 

告訴表單助手在表格中輸入填充的字段是很重要的。當表單發佈到控制器時,它將出現在$this->data(對於Cake 1.x)。標準約定(如果屬於關聯)將在Record模型中使用戶的字段名稱user_id

function record() 
{ 
    if(!empty($this->data)) 
    { 
     if(!$this->Record->save($this->data)) 
     { 
      die("Failed to save..."); 
     } 
    } 
    $this->loadModel('User'); 
    $this->set('users',$this->User->find('list')); 
} 
+0

其實這個記錄功能是在記錄控制器,我正在用戶填充下拉菜單。我想在用戶從下拉列表中選擇他的姓名時保存用戶標識,並在選擇他的姓名後,點擊按鈕上的按鈕。當他們點擊簽入按鈕時,我想將他的標識和時間保存在與記錄模型和記錄控制器相對應的名爲記錄的數據庫表中。 – Arsh

+0

在下拉列表中,我從用戶控制器獲取數據。 – Arsh

+0

視圖文件在記錄控制器中 – Arsh

0

如果你想保存的用戶ID,然後

$rec = $this->User->find('list', array('fields'=> array('User.user_id','User.username'))); 

$this->set(compact('rec')); 

在你看來

$this->Form->input('User.user_id',array('empty'=>'Select User', 'options'=>$rec)); 

您可以收集它在你以這種方式

$this->data['User']['user_id'] 

希望形成行動這將爲你工作

+0

我想將userId保存在與記錄控制器相對應的記錄表中​​。 UserId已經存在於與用戶控制器相對應的用戶表中。 – Arsh

+0

在記錄表中,我有這三個字段:id,user_id,在 – Arsh

+0

感謝您的答案。我會試試這個。希望它能爲我工作。 – Arsh