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

cpt*_*tnk 1 zend-validate zend-framework2

我再次遇到一个我似乎无法理解的问题.我有一个这样的表单元素:

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

        ));
Run Code Online (Sandbox Code Playgroud)

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

/**
 * @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']);
}
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

Sam*_*Sam 5

disabled属性完全符合它所声明的内容.它禁用了html-form-element.这意味着,当您将表单发送回服务/控制器时,该表单字段将不会发布.

现在我的假设是您不希望用户编辑EditForm中显示的某些数据?在这种情况下,请不要使用disabled,更好地选择readonly显示目的.

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