Значение формы формы CakePHP как table.id, выберите текст опции как table.textfield

Я новичок в Cake. У меня есть некоторые настройки, соответствующие «пользователям» и таблице «профилей», контроллеру, модели и виду. В моих profiles/add просмотра я пытаюсь вывести user.id вход со значением, являющимся user.id а текст опции – user.username . В конечном итоге значение user.id будет сохранено в user.id profile.user_id .

Я прочитал много документации и успешно настроил select для вывода параметров из user таблиц, но использует user.id как значение, так и текст опции.

контроллер:

  $this->set('users', $this->Profile->User->find('list')); 

Посмотреть:

  echo $this->Form->input('user_id'); 

Похоже, что такая вещь будет обычной, поэтому не стесняйтесь отвечать только ссылкой на документацию, если я полностью ее не замечаю.

Благодаря!

Solutions Collecting From Web of "Значение формы формы CakePHP как table.id, выберите текст опции как table.textfield"

успешно настройте выбор для вывода параметров из пользовательских таблиц, но он использует user.id как значение, так и текст опции.

find('list') по умолчанию будет использовать первичный ключ в качестве ключа и displayField модели в качестве значения.

Если модель не имеет явного displayField но имеет поле с именем title или name Cake автоматически выберет это поле, в противном случае он не угадает и просто использует поле первичного ключа – это то, что происходит в вопросе.

Однако вы можете просто указать, какие поля вы хотите в результатах вашего find('list') . Поэтому либо:

Установите модель displayField

 class User extends AppModel { public $displayField = 'username'; } 

а затем использовать:

 $users = $this->User->find('list'); 

Явно выберите поля

 $users = $this->User->find('list', array( 'fields' => array('id', 'username') )); 

В обоих случаях – результат будет выглядеть следующим образом:

 array( 1 => 'firstuser', ... 76 => 'AD7six' )