2013-08-19 48 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