Zend validate将“禁用”输入字段解释为空

时间:2013-08-19 15:46:44

标签: zend-framework2 zend-validate

我又遇到了一个我似乎无法理解的问题。 我有一个像这样的表单元素:

$this->add(array(
        'type'    => 'datetime',
        'name'    => 'modifiedTime',
        'options' => array(
            'label' => 'Modified Time',
            ),
         'attributes' => array(
            'disabled' => 'disable',
            ),

        ));

这个通过我的实体(我正在使用学说)正确填充:

/**
 * @ORM\Column(type="datetime", nullable=true, name="modified_time") 
 * 
 * @Form\Exclude()
 */
protected $modifiedTime;

public function getModifiedTime(){
    return $this->modifiedTime;
}

public function populate($data)
{
$this->modifiedTime = date_create($data['modifiedTime']);
}

只要未设置“禁用”属性,此工作就完全正常。但是一旦我得到验证错误声称“值是必需的且不能为空”事件,则在输入中设置值。

任何想法?

1 个答案:

答案 0 :(得分:5)

disabled属性完全符合它的含义。它禁用了html-form-element。这意味着,当您将表单发送回服务/控制器时,该表单字段将发布。

现在我的假设是您不希望用户编辑EditForm中显示的某些数据?在这种情况下,请勿使用disabled,最好选择readonly进行显示。

在服务器端,只需忽略用户发布的内容即可。就像它只读时一样,数据仍然会被发送,并且可以由用户使用browser-dev-tools进行修改;)