2012-02-10 2 views
1

저는 ZF 1.11, PHP 5.3, Windows 및 zfdatagrid의 최신 버전을 사용하고 있습니다.zfdatagrid 날짜 형식

나는

$ 그리드 -> updateColumn ('생일', 배열 ('형식'=> 배열 ('날짜', 배열 ('DATE_FORMAT'=> 'DD-MM-YYYY')))

를 사용);

"생일"속성을 dd-MM-yyyy로 표시하려면 다음을 입력하십시오. 수정 버튼 (CRUD 사용)을 클릭하면이 속성의 값이 'yyyy-MM-dd'로 표시됩니다. 사용자가 저장 버튼을 클릭하면 오류 메시지가 표시됩니다 (날짜를 dd-MM-yyyy로 입력하십시오).

yyyy-MM-dd 대신 dd-MM-yyyy로 값을 표시하려면 어떻게해야합니까? 부두에보고

답변

1

고맙지 만 문제가 해결되지 않았습니다. 실제로, 내가 한 것은 crud.form_built 이벤트에 대한 이벤트 리스너를 추가하는 것입니다. 이 이벤트에서 호출 된 메소드는 새로운 Zend_Validate_Date 객체를 생성하고이 유효성 검사기를 해당 zfdatagrid 요소에 할당합니다.

이것은 실제로 해킹이지만 작동합니다. 사실, zfdatagrid는 PostgreSQL에서 실제로 작동하지 않으며 여러 곳에서 매뉴얼이 제공됩니다.

1

난 당신의 코드가 어쩌면 slighty를 잘못된 생각 : 아마

$grid->updateColumn('birthday', array('format'=> array('date',array('date_format' => 'dd-MM-yyyy')))); 

: 당신이 일에 별도의 배열을()했다처럼

$grid->updateColumn('birthday', array('format'=> 'date',array('date_format' => 'dd-MM-yyyy'))); 

보인다.

참조 :

날짜 ZFDatagrid 그것을 사용할 이름 Zend_Locale와 Zend_Registry의 키를합니다. 또한

  • 로케일
  • DATE_FORMAT
  • 유형

$ 그리드 -> updateColumn (인수로 Zend_Locale의 인스턴스 또는 다음 옵션 배열을 전달할 수 있습니다 'field', array ('format'=> 'date'));

+0

내 친구를 구해줬습니다. (y) – NullPointer

0

경고!

즉 "현지화 된"값은 다음과 같습니다.

그리드 $grid->setForm($myform);

에 있지만 $grid->deploy();

의 호출하기 전에 양식을 통과 한 후 나는 양식의 요소의 취득 후 zfdatagrid 이벤트를 등록 다음

$Form=$grid->getForm(1); 

$dateVal = $Form->getElement('birthday')->getValue(); 

if(Zend_Date::isDate($dateVal,'yyyy-MM-dd', 'en')) 
    $dateObject = new Zend_Date($dateVal); 

$Form->getElement('birthday') 
    ->setValue($dateObject->toString('dd.MM.yyyy')) 
    ->setValidators(array(new Zend_Validate_Date('dd.MM.yyyy'))) 
    ; 

같은 값을 수동으로 설정 트리거 "crud.before_update"

$grid->listenEvent('crud.before_update', array($this, '_updateCallback') 
전에 같은이

public function _updateCallback(Bvb_Grid_Event $e) 
{  
    $n = $e->getParam('newValues'); 
    list($d,$m,$y) = explode('.', $n['birthday']);  
    $sqldate = $y.'-'.$m.'-'.$d;  
    $n['birthday'] = $sqldate; 

    $e->setParam('newValues', $n); 
} 

또는 사용 젠드 날짜 같은 사용자 정의와()이 컨트롤러 _updateCallback에서 함수를 호출 0

그 우리가 저장하고자하는 DATEVALUE을 보장하기 위해 날짜를 리팩토링, 유효한 SQL에 미국 날짜 형식 ..

희망이 도움이 될 것입니다. z.

+1

큰 대담한 글자가 영어보다 나쁩니다 (IMO :-) – kleopatra