我有一个Cakephp 1.3表单,允许用户编辑配置文件数据.但是表格中的一些信息需要只读(有时).
我唯一的选择是在只读的情况下回显和格式化字段内容,或者在Cake表单中是否有允许只读字段的标志.理想情况下,只读字段将与其他接口类似地显示为灰色.
echo $this->Form->create('User', array('url' => array('controller' => 'User', 'action'=>'editUser')));
echo $this->Form->input('id', array('type'=>'hidden'));
If (!isset($IsAdmin)) {
// Only display username - read only! Add code here
echo $this->Form->input('username', array('label' => __d('users', 'User',true)));
} else {
// Admins can edit user names
echo $this->Form->input('username', array('label' => __d('users', 'User',true)));
}
... more fields here
echo $this->Form->end(__d('users', 'Submit',true));
Run Code Online (Sandbox Code Playgroud)
tha*_*tah 23
您可以向options数组添加一个'disabled'键,但是要意识到这只是表单的前端/表示,人们将能够覆盖输入字段的'disabled'属性并修改其值.
为了防止保存不需要的更改,您需要在使用模型保存数据时指定"fieldList"
输出禁用的表单字段;
echo $this->Form->input('fieldname', array('type'=>'hidden', 'disabled' => 'disabled'));
Run Code Online (Sandbox Code Playgroud)
然后,在保存数据时,指定一个字段列表(文档:http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Models.html#saving-your-data)
$this->MyModel->save($this->data, true, array('field1', 'field2'));
Run Code Online (Sandbox Code Playgroud)
字段列表应包括允许用户更新的所有字段
小智 18
disabled属性很好但实际上,输入字段具有'readonly'属性.并且听起来你希望仍然向用户显示该字段,因此使用"隐藏"并不能真正解决您想要做的事情.
这是另一种选择(实际上特别针对"只读"的要求):
echo $this->Form->input('fieldname', array('readonly' => 'readonly'));
Run Code Online (Sandbox Code Playgroud)
我发现使用禁用可以阻止jquery点击触发器从触发到readonly仍然触发,例如使用bootstrap datepicker文本字段
这是WC3的链接:http://www.w3schools.com/tags/att_input_readonly.asp