首页 > 解决方案 > 在 symfony 和 html 中的 select 中选择默认选择字段

问题描述

在这里,我的数据库中有一个保险表,其中存储了医生可以附属的保险(带有他们的名称和徽标)。现在医生可以在他的医生空间中选择一种、两种或没有保险。但我有一个问题,当医生没有加入任何保险时,我想选择一个默认值表明这个医生还没有保险,但是我选择的不是保险的东西都不生效。

控制器

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

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

    $cliniqueRepo = $em->getRepository('DoctixAdminBundle:Clinique');

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

    $object  = $assuranceRepo->findOneBy(['id' => $request->get('assurance')]);
    $medecin = $repo->findOneBy([
        '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->setClinique($cliniqueRepo->find($request->get('clinique')));
        $medecin->getUser()->setAdresse($request->get('adresse'));
        $medecin->getUser()->setNumTel($request->get('telephone'));
        $medecin->setQuartier($request->get('quartier'));
        $medecin->setNumOrdre($request->get('numordre'));

        if ($object) {
            $medecin->addAssurance($object);
        }
        $em->persist($medecin);

        $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', [
            'medecin'     => $medecin,
            'specialites' => $specialiteRepo->findAll(),
            'cliniques'   => $cliniqueRepo->findAll(),
            'assurances'  => $assuranceRepo->findAll(),
        ]);
    }
}

枝条

<div class="col-md-6">

  <div class="form-group">
    <label for="assurance" class="control-label">Assurance </label>

    <select id="assurance" class="form-control" placeholder="Assurance" name="assurance" multiple>
      <option value="Pas d Assurance" selected="Pas encore">Pas d'Assurance</option>

      {% for assurance in assurances %}
      <option value="{{ assurance.id }}"
              {% for it in medecin.assurance %}
              {{ it.id== assurance.id ?
      'selected' : '' }}
      {% endfor %} >{{ assurance.nom|upper }}</option>
      {% endfor %}
    </select>

  </div>

</div>

<div class="row">
  <div class="col-md-offset-3 col-md-3">
    <input type="submit" class="btn_1 btn-success medium" form="editProfil" value="Valider">
    <a href="{{ path('medecin_parametre') }}" class=" btn_1 btn-danger medium">Annuler </a>
  </div>
</div>

树枝视图将在哪里显示或不显示医生所属的保险

<div class="col-md-6">
  <div class="form-group">
    <label>Vos Assurances</label>
    {% for item in medecin.assurance %}
    {% if item is not empty %}
    <input type="text" class="form-control" readonly
           placeholder="{{ item.nom|upper }} ">
    {% else %}
    <input type="text" class="form-control" readonly
           placeholder="Vous n'avez pas d'assurance ">
    {% endif %}
    {% endfor %}
  </div>
</div>

现在如何在医生没有保险的情况下显示“没有保险”这样的段落?谢谢。

标签: htmlsymfonyselect

解决方案


要检查药物是否有任何保证,您必须检查数组medecin.assurance是否为空

像这样的东西:

{% if medecin.assurance is empty %}
    {# This medecin has no assurances, act accordingly #}
{% else %}
    {# Display medecin's assurances #}
    {% for item in medecin.assurance %}
        {# Display each assurance #}
    {% endfor %}
{% endif %}

推荐阅读