Cakephp 3.6.14: сделайте выбор в контроллере для поля выбора в поле зрения и отключите его

У меня есть таблица 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]);
 .....
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать это:

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

Однако есть ошибка ... если выбор отключен и имя пользователя выбрано, когда я отправляю форму, $this->request->getData('assigned_to') имеет значение null :(

aggtr 23.01.2019 14:36

если убрать 'disabled' => $disabled то работает, передает правильное значение

aggtr 23.01.2019 14:44

да потому что вы использовали disabled. Вы должны использовать readonly вместо disabled. Cakephp не отправляет значение элемента, если он отключен.

Sehdev 23.01.2019 14:44

Другие вопросы по теме