Почему параметр метода преобразования всегда равен нулю

У меня есть задача показать пользователю срок годности страницы. Для этого я создал тип формы, содержащий два поля, первое из которых позволяет выбирать между 1 неделей, 1 месяцем и 1 годом, и настраиваемым. если заказчик выбирает заказ, отображается другое поле календаря. после того, как я использовал преобразователь данных, потому что первое поле возвращает строку ('1week', '1year' ...), а второе поле будет либо нулевым, либо датой проблема в том, что метод обратного преобразования работает отлично, но параметр метода преобразования равен нулю, т.е. когда пользователь хочет отредактировать страницу, он не видит последних значений двух полей.

class ExpiryDateType extends AbstractType {

public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options) {
    $builder     ->add("chosen",  \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class,array(
                'choices' => array(
                    '1 week' => '7',
                    '1 month' => '30',
                    "1 year"=>"365",
                    "custom"=>"custom"
                )))


            ->add('ExpiryDate', 'sonata_type_date_picker', array('format' => 'yyyy-MM-dd', 'label' => '', 'required' => false))

    ->addModelTransformer(new \ADS\CoreBundle\Form\DataTransformer\ExpiryDateTransformer());
}

public function configureOptions(\Symfony\Component\OptionsResolver\OptionsResolver $resolver) {}


public function buildView(\Symfony\Component\Form\FormView $view, \Symfony\Component\Form\FormInterface $form, array $options) {
    parent::buildView($view, $form, $options);  
}
 public function getBlockPrefix()
{
    return 'expirydate';
}

}

и это трансформатор

class ExpiryDateTransformer implements DataTransformerInterface {

public function transform($date) {
    //date is null !!!!
}

public function reverseTransform($array) {

    if ($array["chosen"] == "7") {
        $date = new \DateTime("now");
        $date->modify("+1 week");
        $date->format('Y-m-d H:i:s');
        return($date);
    } else if ($array["chosen"] == "30") {
        $date = new \DateTime("now");
        $date->modify("+1 month");
        $date->format('Y-m-d H:i:s');
        return($date);
    } else if ($array["chosen"] == "365") {
        $date = new \DateTime("now");
        $date->modify("+1 year");
        $date->format('Y-m-d H:i:s');
        return($date);
    } else {
        return($array["ExpiryDate"]);
    }
}

}

Код контроллера, пожалуйста.

emix 21.05.2018 15:12

Я использую пакет администрирования сонаты -> add ('ExpiryDate', \ ADS \ CoreBundle \ Form \ ExpiryDateType :: class, array ("label" => "" ‌)) это в методе сонаты configureFormfields

chouaib mehri 21.05.2018 15:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
78
0

Другие вопросы по теме