2013-08-19 93 views
1

我再次遇到了我无法理解的问题。 我有一个表单元素,像这样:Zend验证将“禁用”输入字段解释为空

$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']); 
} 

这只要工作完全地精作为“禁用“属性未设置。但是,一旦我得到一个验证错误,声称“值是必需的,不能为空”,则在输入中设置该值。

任何想法?

回答

5

被禁用的属性完全正确地表示它。它禁用了html-form-element。这意味着,当您将表单发送回您的服务/控制器时,该表单字段将会发布而不是

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

在服务器端,只需忽略用户发布的内容。因为它只是只读的,数据仍然会被发送,并可以由用户使用浏览器开发工具修改;)

+0

哦哇这感到尴尬感谢指出! – cptnk

+1

这是正确的,但不考虑对只读字段的验证。我有一个只读字段,我可以从日期选择器中选择一个日期以避免忘记日期。该字段是必需的,但如果留空,验证对其没有影响。 – cwhisperer