Я новичок в 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');
Похоже, что такая вещь будет обычной, поэтому не стесняйтесь отвечать только ссылкой на документацию, если я полностью ее не замечаю.
Благодаря!
успешно настройте выбор для вывода параметров из пользовательских таблиц, но он использует user.id как значение, так и текст опции.
find('list')
по умолчанию будет использовать первичный ключ в качестве ключа и displayField
модели в качестве значения.
Если модель не имеет явного displayField
но имеет поле с именем title
или name
Cake автоматически выберет это поле, в противном случае он не угадает и просто использует поле первичного ключа – это то, что происходит в вопросе.
Однако вы можете просто указать, какие поля вы хотите в результатах вашего find('list')
. Поэтому либо:
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' )