Cakephp 3.6.14:在控制器中为视图中的选择框进行选择并禁用它

Cakephp 3.6.14:在控制器中为视图中的选择框进行选择并禁用它,php,forms,cakephp,combobox,field,Php,Forms,Cakephp,Combobox,Field,我有一个Users表,其中包含两个字段:id | name。在控制器中,我正在传递一个$userid,如果此$userid不为空,则用户的表单字段必须填写用户名称,如果$userid为空,则此字段必须是包含应用程序所有用户的选择框 我已经成功构建了选择框的一部分(其中,$userid为空),但我不知道(如果$userid不为空)如何在选择框中选择正确的名称并将其禁用,以便无法更改 以下是控制器代码: public function add($userid = null) { ..

我有一个
Users
表,其中包含两个字段:
id | name
。在控制器中,我正在传递一个
$userid
,如果此
$userid
不为空,则用户的表单字段必须填写用户名称,如果
$userid
为空,则此字段必须是包含应用程序所有用户的选择框

我已经成功构建了选择框的一部分(其中,
$userid
为空),但我不知道(如果
$userid
不为空)如何在选择框中选择正确的名称并将其禁用,以便无法更改

以下是控制器代码:

public function add($userid = null)
{ 
       ......
       $usersTo = $this->Tasks->UsersTo->find('list', ['limit' => 200]);
       ......
}
 .....
 echo $this->Form->control('assigned_to', ['options' => $usersTo, 'empty' => true]);
 .....
以及查看代码:

public function add($userid = null)
{ 
       ......
       $usersTo = $this->Tasks->UsersTo->find('list', ['limit' => 200]);
       ......
}
 .....
 echo $this->Form->control('assigned_to', ['options' => $usersTo, 'empty' => true]);
 .....
您可以尝试以下方法:

控制器代码:

查看代码:


但是有一个bug。。。如果在我提交表单
$this->request->getData('assigned_to')
时禁用了选择并选择了用户名,则该表单为空:(如果我删除
'disabled'=>$disabled
,它会工作,它会传递正确的值yes,因为您使用了disabled。您必须使用readonly而不是disabled。如果元素被禁用,Cakephp不会发送元素的值。