2016-08-17 2 views
0

Fluo 6.2와 Extbase 6.2를 사용하여 Exto Builder를 Typo3 6.2로 확장했습니다.
날짜 속성이있는 Appointment-Objects를 만들었습니다.
enter image description hereTypo3 6.2 Extbase Extension에 가능한 날짜 입력 형식을 설정하는 방법?

"dd.mm.yyyy"형식으로 날짜를 입력하고 싶습니다.
enter image description here

그리고이 오류 제공 : 그래서이 시도 enter image description here
나는이 익숙하지 않아요으로 우둔 그리고 난 좋은 방법으로이 문제를 해결하고자합니다.
createAction 코드는 단순히 때문에 확장 빌더에 의해 생성되고는 다음과 같습니다

지금은 내가 작업 형식의 순서를 여기서 뭔가를 변경하면 내가에서 같은 일을해야한다는 것을 깨닫게
/** 
* action create 
* 
* @param \JH\Appmgmt\Domain\Model\Appointment $newAppointment 
* @return void 
*/ 
public function createAction(\JH\Appmgmt\Domain\Model\Appointment $newAppointment) { 
    $this->addFlashMessage('The object was created. Please be aware that this action is publicly accessible unless you implement an access check. See <a href="http://wiki.typo3.org/T3Doc/Extension_Builder/Using_the_Extension_Builder#1._Model_the_domain" target="_blank">Wiki</a>', '', \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR); 
    $this->appointmentRepository->add($newAppointment); 
    $this->redirect('list'); 
} 

updateAction과 내가 아직 알지 못하는 다른 것들이있을 것입니다.

또한 필사적 부분에서 어떻게 든 원하는 형식으로 포맷을 시도하지만이 실패 묶여 - 같은 결과 :

<f:form.textfield property="appointmentDate" value="{appointment.appointmentDate->f:format.date(format:'Y-m-d\TH:i:sP')}" /><br /> 

을 당신의 도움을 필요로하는 곳에 그래서 그건 - 내가 어디 있는지 알고하지 않습니다 그리고 다른 필드에서도이 날짜 형식을 필요로 할 것이므로이 날짜 형식을 전역 적으로 허용하는 방법에 대해 설명합니다.

내가 도메인 모델에서 뭔가를 변화 생각할 수있는 유일한 다른 것은 :

/** 
* appointmentDate 
* 
* @var \DateTime 
*/ 
protected $appointmentDate = NULL; 

하지만 난이 접근 방법을 모르겠어요. :( 누구 아이디어?

답변

1

당신은 날짜 개체로 형식이 올바르지 않습니다 날짜를 보냅니다. 를 오류가 말한다 정확히 무엇을 그.

무엇 당신이 할 수있는 것은 다시 포맷은 그렇게 보낼 날짜입니다 .. 이것이 속성 매핑을 호출하는 initialize 조치를 수행

개체에 대한 유효한 인수로 컨트롤러 액션에 도착 명확한 예는 여기에서 찾을 수 있다는 : http://www.kalpatech.in/blog/detail/article/typo3-extbase-datetime-property-converter.html

부분 당신을 필요가 :

// Here we convert the property mapping using the property mapper 
    public function initializeAction() { 
     if ($this->arguments->hasArgument('newCalendar')) { 
      $this->arguments->getArgument('newCalendar')->getPropertyMappingConfiguration()->forProperty('startdate')->setTypeConverterOption('TYPO3\\CMS\\Extbase\\Property\\TypeConverter\\DateTimeConverter',\TYPO3\CMS\Extbase\Property\TypeConverter\DateTimeConverter::CONFIGURATION_DATE_FORMAT,'d-m-Y'); 
     } 
    } 

당신은 또한 당신의 컨트롤러에 날짜 인수의 유효성 검사를 해제하고 '날짜'에서 유효한 날짜 개체를 만든 다음 setAppointmentDate($yourNewDateObject)를 사용할 수 있습니다. 그런 다음 extbase 유효성 검사를 실행합니다. 이는 좋은 습관이 아닙니다.

+0

그리고 그 유형의 인수가 여러 개인 경우 너무 많아서 모두 쓰고 싶지 않은 경우 어떻게해야합니까? –