MaksimSa
@MaksimSa
Ломаю стены

Как сделать, чтобы при заполнении форма отправляла текущую дату?

Всем добрый день.
Сегодня весь день пытался сделать, чтобы при отправки формы текущее значение даты записывалось в базу данных.
Получился только вариант, когда дата стала записывать значение "2010-01-01"
По другому сделать никак не смог.

А теперь к тому, что у меня есть:
Отдельный файл с формой:



class DonutType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            //Создаем форму
            $builder->add('date_operation', 'date', array('data' => $options['date_option']))
                ->getForm();
        }
    
        public function getName()
        {
            return 'donut';
        }
    
        public function configureOptions(OptionsResolver $resolver)
        {
            $date_option = new \Date;
            $date_option = date_format($date_option, 'yyyy-MM-dd');
            $resolver->setDefaults(array(
                'data_class' => 'M4\MinecraftBundle\Entity\Donut',
                'date_option' => $date_option,
            ));
        }
    }


И сам контроллер:


public function donutAction(Request $request, $donut_success = 0){

        //$date_option = new \DateTime('tomorrow');
        //$date_option = date_format($date_option, 'yyyy-MM-dd');

        $id_user= $this->get('security.context')->getToken()->getUser()->getId();
        $donut = new Donut();
        $form = $this->createForm(new DonutType(), $donut, array('id_user'=>$id_user, 'sum'=>1));


            if ($request->getMethod() == 'POST') {
                $form->bind($request);

                if ($form->isValid()) {

                    // выполняем прочие действие, например, сохраняем задачу в базе данных donut
                    $em = $this->getDoctrine()->getEntityManager();
                    $em->persist($donut);
                    $em->flush();

                    return $this->redirect($this->generateUrl('m4_minecraft_homepage'));
                }
            }

        return $this->render('M4MinecraftBundle:Default:donut.html.twig', array(
            'form' => $form->createView(),
        ));
    }

Раньше дата спокойно отправлялась, но после того как я решил форму сделать в отдельном файле начались такие проблемы. Можете подсказать мне, как мне предать текущую дату в запрос?
  • Вопрос задан
  • 542 просмотра
Решения вопроса 1
Вам дату нужно не из формы брать, а в контроллере в модель напрямую записывать.
$donut = new Donut();
$donut->date = new \DateTime();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Вы можете просто в конструкторе Donut заполнять свойство нужной датой. Либо воспользоваться, например, Timestampable из DoctrineExtensions.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы