У меня есть таблица Users
с 2 полями (среди прочего): id | name
. В контроллере я передаю $userid
, если этот $userid
не равен нулю, то поле формы для пользователя должно быть заполнено именем пользователя, если $userid
равен нулю, тогда это поле должно быть полем выбора со всеми пользователями применение.
Я успешно построил часть поля выбора (где $userid
имеет значение null), но я не могу понять (если $userid
не равен нулю), как выбрать правильное имя в поле выбора и отключить его, чтобы его нельзя было изменить.
Вот Код контроллера:
public function add($userid = null)
{
......
$usersTo = $this->Tasks->UsersTo->find('list', ['limit' => 200]);
......
}
И Посмотреть код:
.....
echo $this->Form->control('assigned_to', ['options' => $usersTo, 'empty' => true]);
.....
Вы можете попробовать это:
Controller Code:
public function add($userid = null)
{
/* Set userid on your view if user id is not empty code */
if (!empty($userid)) {
$this->set(compact('userid'));
}
......
$usersTo = $this->Tasks->UsersTo->find('list', ['limit' => 200]);
......
}
View code:
$disabled = false;
$selectedUser = '';
if (!empty($userid)) {
$disabled = true; // set disabled property true if userid is not empty
$selectedUser = $userid; // set userid as selected user
}
echo $this->Form->control('assigned_to',['options' => $usersTo, 'empty' => true, 'value' => $selectedUser, 'disabled' => $disabled]); // pass disabled and selectedUser here
если убрать 'disabled' => $disabled
то работает, передает правильное значение
да потому что вы использовали disabled. Вы должны использовать readonly вместо disabled. Cakephp не отправляет значение элемента, если он отключен.
Однако есть ошибка ... если выбор отключен и имя пользователя выбрано, когда я отправляю форму,
$this->request->getData('assigned_to')
имеет значение null :(