2013-02-03 3 views
5

젠드 프레임 워크 2의 새로 출시 된 버전으로 two new form elements were added; DateSelectMonthSelect. 전 세 선택을 추가 전, 사용하고 싶습니다; 일, 월, 년. 그러나, 내가 원하는 출력을 형식화하는 데 문제가 있습니다 - 그리고 이것에 대한 문서가 없습니다!젠드 프레임 워크 2 DateSelect/MonthSelect formatting

내가 (this page에서 촬영)이 같은 내 양식에 양식 요소를 추가하고 : 출력

$this->add(array(
    'type' => 'Zend\Form\Element\DateSelect', 
    'name' => 'birthDate', 
    'options' => array(
     'label'    => 'Date', 
     'create_empty_option' => true, 
     'day_attributes'  => array(
      'data-placeholder' => 'Day', 
      'style'   => 'width: 20%', 
     ), 
     'month_attributes' => array(
      'data-placeholder' => 'Month', 
      'style'   => 'width: 20%', 
     ), 
     'year_attributes'  => array(
      'data-placeholder' => 'Year', 
      'style'   => 'width: 20%', 
     ) 
    ) 
)); 

,이 같은 일을 오전 :

echo $this->formDateSelect($form->get('birthDate')); 

것은이 때문이다 I 돈 셀렉트 형식을 제어하는 ​​방법을 알지 못합니다. 예를 들어, 현재이 형식으로 출력됩니다 : [month] [day], [year]. 나는 두 가지를 바꾸고 싶다. 먼저, 나는 하루와 월을 바꾸고 싶습니다. 둘째로 나는 쉼표를 없애고 싶습니다.

도우미는 IntlDateFormatter 클래스를 사용하여 선택 항목의 서식을 지정합니다.

echo $this->formDateSelect($form->get('birthDate'), IntlDateFormatter::SHORT); 

은 모든 상수를 시도하는 데, 난 아직도 내가 원하는 형식을 얻을 수 없습니다 : 소스 코드에서,이 같은 __invoke() [link to source code]를 호출 할 때 날짜 유형에 대한 predefined constants를 사용할 수있는 것으로 나타났습니다.

세 선택 항목에 대한 getter가 있지만 각 항목에 formSelect보기 도우미를 사용하는 것으로 나타났습니다. 데이터 채우기가 새보기 도우미에 있으므로 비어있는 선택 항목이 렌더링됩니다. 따라서 선택 항목을 개별적으로 사용하는 목적을 거의 상쇄합니다. 그렇다면 정규 선택을 사용할 수도 있습니다.

내 셀렉트 형식이 어떻게 조정되는지 더 잘 알 수있는 사람이 있습니까? 너무 많은 번거 로움없이 가능합니까? 아니면 최대한의 유연성을 위해 3 개의 일반 선택을 사용해야합니까?

답변

2

ViewHelper의 형식은 $this->formDateSelect($element, $intlFormat, $locale)입니다.

이렇게 말하면 현재 로캘 설정에 액세스하고 int를 ViewHelpers __invoke()에 삽입하여 원하는 출력을 생성 할 수 있습니다. 그래도 문제가 해결되지 않으면)

을하며 ViewHelper의 getLocale()을 보는 것은 구성에서 기본 translator가이 ViewHelper에 대해 명시 적으로 locale을 설정해야하므로, 사용하지 않는,하지만 그것을 잘 해결해야한다는, 의미 당신을 위해 예상대로 Bakura에게 메시지를 건네 줄 것을 조언합니다. his Blog about the new Form Features

+0

필자는 자신의 구성에서 로케일을 사용하고 있다고 가정 했으므로이를 생략했습니다. 로케일을 변경해도 항상 원하는 것은 아니지만 (예 : 내 국가에서 내가 좋아하지 않는 형식을 제공함). 그러나, 나는 나의 목표 언어에 대해 형식화가 정확히 내가 원하는 방식으로 운이 좋았다! 나는 이렇게했다 :'echo $ this-> formDateSelect ($ this-> form-> get ('birthDate'), IntlDateFormatter :: LONG, 'ro_RO'))'. 답변 해 주셔서 대단히 감사합니다. 매우 감사드립니다! – Andy0708

2

날짜를 출력 할 때 Select DOM 요소 사이에 임의의 쉼표를 넣으려는 이유가 무엇인지 전혀 알지 못합니다. 무엇을 할 수 있습니까? 정확히 그걸로?

는 옵션을 통해에 전달할 수 쉼표와 다른 구분자 제거하려면 : 나는 기본적

으로 false해야한다고 생각

"render_delimiters": false 

0

샘 방금 로케일 설정을 업데이트 할 수 있습니다 언급로 php.ini

예를 들어, 내 PHP 에서이 있습니다.INI

intl.default_locale = EN_GB

이 내 UK 프로젝트에 필요한 일/월/년 형식으로 DateSelect 요소를 포맷합니다.