2013-08-06 1 views
-1

Я новичок в CakePhp. У меня есть контроллер пользователей и контролер записей в моем торте. Контроллер пользователей сохраняет данные пользователя, такие как имя пользователя и т. Д. Контроллер записей сохраняет другие записи пользователей. Контроллер записей имеет один файл ctp. В этом файле у меня есть раскрывающийся список, отображающий все имена пользователей из пользовательского контроллера. Пользователь выбирает свое имя из выпадающего списка. Также есть кнопка с именем checkin. Теперь я хочу сохранить идентификатор пользователя в базе данных в соответствии с выбором пользователя, когда пользователь нажимает кнопку CheckIn. Как это сделать?CakePhp: Сохранить идентификатор пользователя в соответствии с выбранным пользователем

Вот мой контроллер записи Функция

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

Я хочу сохранить в модели записей, которая имеет записи с именем table в базе данных. – Arsh

+0

Я хочу спроектировать сейчас не после 1 месяца. Спасибо за ваш драгоценный комментарий. Отныне, пожалуйста, не комментируйте мои вопросы, потому что я хочу получить ответы здесь не на совет. – Arsh

ответ

1

Вы должны взять 1 совет ------- 'ы, узнать основы CakePHP, прежде чем вы получите впереди о себе, и это остановит вас, застряв в этих точках в будущем. На ваши вопросы не хватает существенных деталей, поэтому я собираюсь сделать предположения.

Все, что вам нужно сделать, это передать идентификатор пользователя модели пользователя, когда вы вызываете save(). Если у вас есть элемент выбора, чтобы выбрать имя пользователя, я рекомендую делать это:

<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 (для тортов 1.x). Стандартное соглашение (если a относится к ассоциации) сделает имя поля пользователя user_id в модели Record.

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

Фактически эта функция записи находится в контроллере записей, и я заполняю выпадающий список пользователей. Я хочу сохранить идентификатор пользователей, когда пользователь выберет его имя из раскрывающегося списка, и после выбора его имени нажмите кнопку Chheck In. Когда они нажимают на кнопку регистрации, я хочу сохранить его идентификатор и время в таблице базы данных с именами, которые соответствуют модели записей и контроллеру записей. – Arsh

+0

В раскрывающемся списке я извлекаю данные из Контроллера пользователей. – Arsh

+0

Файл представления находится в контроллере записей – Arsh

0

Если вы хотите сохранить идентификатор пользователя, то

$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 в таблице users, которая соответствует пользовательскому контроллеру. – Arsh

+0

В таблице записей у меня есть эти три поля: id, user_id, в – Arsh

+0

Спасибо за ответ. Я попробую это. Надеюсь, это сработает для меня. – Arsh