В моем приложении я отправляю электронное письмо, и когда пользователь щелкает URL-адрес, состояние поля в БД изменяется (обновляется).

В моем контроллере у меня есть:

 public function confirmeAction($username)
{
    $col = $this->getDoctrine()->getRepository('acmeCongeBundle:Collaborateur')->find($username);
    echo $col->getEmailCollaborateur();
    $conge = $this->get('gestion_conge.congeservice')->findCongeByCollaborateur($col);
    $id = 2;

    $conge->setEtatConge($this->get('etat.etatcongeservice')->findEtatById($id));

    return $this->render('acmeCongeBundle:Conge:confirmer.html.twig');
}

Контроллер, отправляющий электронное письмо:

$message = \Swift_Message::newInstance()
    ->setSubject('demande de conge sans solde')
    ->setFrom($col->getEmailCollaborateur())
    ->setTo($form->get("emailcdp")->getData())
    ->setBody($this->renderView('acmeCongeBundle:Conge:demandeCongeNormal.html.twig',array('conge' => $conge )));
    $this->get('mailer')->send($message);

И demandeCongeNormal.html.twig содержат:

{{ url('confirmer_conge' ,{'username':  id }) }}

Я получаю идентификатор пользователя, который отправляет URL-адрес формы электронной почты, и я хочу обновить состояние объекта Conge, когда пользователь нажимает на URL-адрес.

У меня нет исключения, но состояние setEtatConge не меняется. как я могу обновить поле Etat из сущности Conge (Conge существует в моей БД)

0
lala 18 Авг 2014 в 17:43
$conge, вероятно, равно нулю. Пожалуйста, проверьте, какое из ваших предыдущих выражений, использованных для вычисления $conge, возвращает ноль (я предполагаю, что $this->getDoctrine()->getRepository('acmeCongeBundle:Conge')->find($col))
 – 
Noy
18 Авг 2014 в 17:49
Да, это ноль, потому что я пытался написать echo $ conge-> getNbreJour (); это мне ничего не дает, но я получаю Colab ($ col = $ this-> getDoctrine () -> getRepository ('acmeCongeBundle: Collaborateur') -> find ($ username);)
 – 
lala
18 Авг 2014 в 17:56
Вы уверены, что у вас есть acmeCongeBundle: Conge с идентификатором $ col?
 – 
Noy
18 Авг 2014 в 17:58
Это работает для первого, но почему не для второго?
 – 
lala
18 Авг 2014 в 17:58
Да, у меня есть идентификатор $ Col в сущности Conge
 – 
lala
18 Авг 2014 в 18:00

1 ответ

Лучший ответ

В конце действия confirmmeAction необходимо добавить:

$em = $this->getDoctrine()->getManager();
$em->persist($conge);
$em->flush();

Чтобы сохранить данные.

0
Noy 18 Авг 2014 в 18:57