нет рендеринга в моем шаблоне ветки с многотомным отношением в Symfony 3 - PullRequest
0 голосов
/ 13 декабря 2018

Здесь у меня есть отношения ManyToMany между моим доктором и страховкой. Автомобиль может быть связан с несколькими страховыми полисами для его клиники.А страховку могут застраховать несколько врачей.Я уже зарегистрировал страховку, и я хочу разрешить доктору выбора страховку или к которой он присоединен.Но когда я хочу отобразить этот список, ничего не появляется, когда у меня есть страховка на моей базе.

Entity Doctor

/**
 * @ORM\ManyToMany(targetEntity="Doctix\MedecinBundle\Entity\Assurance", cascade={"persist", "remove"}, inversedBy="medecin")
 * @ORM\JoinColumn(nullable=true)
 */
private $assurance;

public function __construct()
{
    $this->assurance = new \Doctrine\Common\Collections\ArrayCollection();
}

Entity Insurance

/**
 * 
 * @ORM\ManyToMany(targetEntity="Doctix\MedecinBundle\Entity\Medecin", mappedBy="assurance")
 */
private $medecin;

public function __construct() {
    $this->medecin = new \Doctrine\Common\Collections\ArrayCollection();
}

Веточка

<select id="assurance" class="form-control" placeholder="Assurance" name="assurance" required>
    <option value="">Assurance *</option>
        {% for m in medecin %}
            {% for assur in m.assurance %}             
                <option value="{{ assur.nom }}" {{ m.assur.id == assur.id ? 'selected' : '' }}>{{ assur.nom|upper }}</option>           
            {% endfor %}
        {% endfor %}
</select>

С этой веткой у меня нет страховки в моем выборе для отображения.

Контроллер

  public function editAction(Request $request)
{
    $user = $this->getUser();
    if ($user === null) {
        throw new NotFoundHttpException('Utilisateur Inexistant');
    }

    $em = $this->getDoctrine()->getManager();
    $repo = $em->getRepository('DoctixMedecinBundle:Medecin');
    $specialiteRepo = $em->getRepository('DoctixAdminBundle:Specialite');

    $assuranceRepo = $em->getRepository('DoctixMedecinBundle:Assurance');

    $medecin = $repo->findOneBy(array(
        'user' => $user,
    ));

    if ($request->isMethod('POST')) {

        if ( ($pass = $request->get('pass')) != ''){
            $medecin->getUser()->setSalt('');
            $factory = $this->get('security.encoder_factory');
            $encoder = $factory->getEncoder($medecin->getUser());
            $password_encoder = $encoder->encodePassword($pass, $medecin->getUser()->getSalt());
            $medecin->getUser()->setPassword($password_encoder);
        }

        $medecin->setSpecialite($specialiteRepo->find($request->get('specialite')));
        $medecin->getUser()->setAdresse($request->get('adresse'));
        $medecin->getUser()->setNumTel($request->get('telephone'));
        $medecin->setQuartier($request->get('quartier'));
        $medecin->addAssurance($request->get('assurance'));

        // Save
        $em->flush();

        // redirection avec le status http 301 ::)))))
        $url = $this->generateUrl('medecin_parametre');
        return $this->redirect($url, 301);

    } else {
        return $this->render('DoctixMedecinBundle:Medecin:editProfile.html.twig', array(
            'medecin' => $medecin,
            'specialites' => $specialiteRepo->findAll(),
            'assurances' => $assuranceRepo->findAll()
        ));
    }
}

Спасибо

...