문자열이나 DateTime 개체를 입력으로 사용할 수있는 사용자 지정 필드가 필요합니다. 토론을 한 후 DataTransformers가 갈 길이라고 결정했습니다. 나는 Cookbook의 지시에 따라,하지만 난 follwing을 오류를 받고 있어요 :DataTransformer를 사용자 지정 필드 형식없이 사용하면 FormFieldType이 예상됩니다.
Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\FormFactory::loadTypeExtensions() must implement interface Symfony\Component\Form\FormTypeInterface, instance of Yanic\HomeBundle\Form\DataTransformer\DateToStringTransformer given, called in /Applications/MAMP/htdocs/symfony-standard-2.1/vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php on line 320 and defined in /Applications/MAMP/htdocs/symfony-standard-2.1/vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php line 332
그것이 FormType를 기대하고 있지만, 워드 프로세서가 그 필요는 없습니다 말했다 것으로 보인다. 내가 사용하고 코드의
:
UsersType.php이
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new \Yanic\HomeBundle\Form\DataTransformer\DateToStringTransformer();
$builder
->add('username')
->add('password','password',
array(
'required' => false
))
->add('email')
->addViewTransformer($transformer)
->add('created', 'datetimeToString', array(
'disabled' => true,
))
->add('modified', 'datetimeToString', array(
'disabled' => true,
))
->add('isActive', null, array(
'label' => 'Is active?',
'required' => false
))
->add('lastLogin', null, array(
'empty_data' => 'never',
'widget' => 'single_text',
'read_only' => true,
'label' => 'Last login'
))
->add('modifiedBy', null, array(
'label' => 'Modified by',
'read_only' => true
))
->add('groups')
;
}
DateToStringTransformer.php
namespace Yanic\HomeBundle\Form\DataTransformer;
use Symfony\Component\Form\DataTransformerInterface;
use Symfony\Component\Form\Exception\TransformationFailedException;
class DateToStringTransformer implements DataTransformerInterface
{
/**
* Transforms an DateTime object to a string.
*
* @param \DateTime|null $issue
* @return string
*/
public function transform($date)
{
if (null === $date) {
return "never";
}
return $date->format('d-m-Y H:i');
}
/**
* Transforms a string (date formatted) to an object (\DateTime).
*
* @param string $date
* @return \DateTime|null
* @throws TransformationFailedException
*/
public function reverseTransform($number)
{
return $number;
}
}
services.yml
services:
form.dataTransformer.datetimeToString:
class: Yanic\HomeBundle\Form\DataTransformer\DateToStringTransformer
tags:
- { name: form.type, alias: datetimeToString }
내가 뭘 잘못된?
아, 내가 심포니 2.1 베타를 사용하고 documentation에서
그랬습니다 ... 나는 계속해서 문서를 다시 읽었지만 그 세부 사항을 얻지 못했습니다 .-(고마워요. – Michi
아직 현상금을 수여 할 수는 없지만 최대한 빨리 처리 할 것입니다. 19 개의 누락 된 시간은 끝났습니다 :-) – Michi
symfony-docs에 대한 PR을 통해 몇 가지 내용을 명확히 알 수 있습니다 : https://github.com/symfony/symfony-docs/pull/1488 – l3l0