2013-08-19 5 views
1

나는 다시는 이해할 수없는 문제에 부딪 혔습니다. 제대로 내 엔티티 (I 교리를 사용하고 있습니다) 그래서 같은 여물이 하나가 채워지는 않습니다Zend validate는 "disabled"입력 필드를 비어있는 것으로 해석합니다.

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

     )); 

: 나는 양식 요소과 같이이이만큼 completly 잘 작동

/** 
* @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

disabled 속성은 해당 내용을 그대로 나타냅니다. html-form-element를 비활성화합니다. 즉, 양식을 서비스/컨트롤러로 다시 보내면 해당 양식 필드는 이 아니고이 게시됩니다.

내 가정은 사용자가 EditForm에 표시된 일부 데이터를 편집하지 못하도록한다는 것입니다. 이 경우 disabled을 사용하지 말고 표시 목적으로 readonly을 선택하는 것이 좋습니다.

서버 쪽에서 사용자가 게시하는 내용을 무시하십시오. 읽었을 때와 마찬가지로 데이터는 계속 보내지고 browser-dev-tools를 사용하여 사용자가 수정할 수 있습니다.)

+0

오우 와우는 그것을 지적 해 주셔서 감사합니다! – cptnk

+1

올바른지 만 읽기 전용 필드의 유효성 검사는 고려되지 않습니다. 나는 datepicker에서 날짜를 잘못 입력하는 것을 피하기 위해 날짜를 선택하는 readonly 필드를 가지고있다. 이 필드는 필수이지만 비워두면 유효성 검사가 영향을주지 않습니다. – cwhisperer