在cakephp中使用硬编码表单输入字段,以便用户无法编辑它?

时间:2014-02-05 10:04:47

标签: cakephp

我在cakephp的注册表格中有以下表格字段。我想让它“硬编码”,因此用户无法编辑它

echo $form->input('name', array('label' => __('Name *', true)));

3 个答案:

答案 0 :(得分:2)

然后不要将其添加到表单中。 那些字段应该添加到控制器中(甚至在之前/之前的模型层之前),然后在保存之前:

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)) {
        ... 
    }
}

请参阅“默认值 - 隐藏”here

答案 1 :(得分:0)

您可以设置readonly属性:

echo $form->input('name', array('label' => __('Name *', true), 'readonly' => true));

但是,这只会影响用户界面,因此您仍然需要应用标记的答案,以确保用户不会更改该值。

答案 2 :(得分:0)

两个选项:

  1. 硬编码保存前的值
  2. 使用白名单
  3. 如果您希望该字段从设置的那一刻起是只读的。使用白名单。这样 - 用户是否提交字段无关紧要。蛋糕不会保存它。

    $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指示,表示该字段不会更改。一个好的用户体验将不允许它在第一位。