我在cakephp中以注册形式有以下表单字段。我想将其"硬编码",因此用户无法编辑
echo $form->input('name', array('label' => __('Name *', true)));
然后不要将其添加到表单中。这些字段应添加到控制器(甚至是vertervalidate/beforesave模型层)中,然后在保存之前:
if ($this->request->is('post')) {
$this->User->create();
// add the content before passing it on to the model
$this->request->data['User']['status'] = 1;
if ($this->User->save($this->request->data)) {
...
}
}
请参阅此处的"默认值 - 隐藏"。
您可以设置readonly
属性:
echo $form->input('name', array('label' => __('Name *', true), 'readonly' => true));
但是,这仅影响UI,因此您仍然必须应用Mark的答案,以确保用户不会更改该值。
两个选项:
- 硬代码保存之前的值
- 使用白色列表
如果您希望该字段是一个只读的字段,从设置的那一刻起。使用白色列表。这样 - 用户是否会提交字段都没关系。蛋糕不会保存。
$white_list = array('title', 'category');
$this->Model->save($data,$validate,$white_list);
另一个解决方案是标记编码:
$this->request->data['User']['status'] = 1;
if ($this->User->save($this->request->data)) {
...
}
任何解决方案都应混合UI指示,表明该字段不会更改。良好的UX不允许在第一名中。