簡體   English   中英

Twig中的Symfony ManyToMany錯誤消息

[英]Symfony ManyToMany error message in Twig

對於一個簡單的字段,我只使用以下代碼:

<div class="form-group form-group-sm{{ not form.name.vars.valid ? ' has-error' }}">
  {{ form_label(form.name, 'name') }}
  <div class="col-sm-9">
    {{ form_widget(form.name, {'attr': {'placeholder': 'name'}}) }}
    {{ form_errors(form.name) }}
  </div>
</div>

出現錯誤時,它會在樹枝中很好地顯示。

但是我有一個ManyToMany字段:

/**
 * @var ArrayCollection
 *
 * @ORM\ManyToMany(targetEntity="Address", cascade={"persist"})
 *
 * @Assert\Valid()
 * @Assert\Count(
 *      min = 1,
 *      minMessage = "at.least.one.address.is.required",
 * )
 */
private $addresses;

因此,如果沒有為我的實體設置地址,則必須顯示錯誤。 但是以前的代碼似乎不起作用。

控制器捕獲到錯誤,但未在樹枝中顯示。

<div class="form-group form-group-sm{{ not form.addresses.vars.valid ? ' has-error' }}">
  {{ form_label(form.addresses, 'addresses') }}
  <div class="col-sm-9">

    {# the following code is for adding elements with javascript via the prototype form #}
    {% import 'common/form/macros/_address.html.twig' as address_form %}
    <div data-component="address" data-value="{{ address_form.data(form.addresses.vars.prototype)|e }}">
      {% for address in form.addresses %}
        {{ address_form.data(address) }}
      {% endfor %}
    </div>

    <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#modal-address">
      <i class="fa fa-plus" aria-hidden="true"></i>
    </button>
    {# #}

    {{ form_errors(form.addresses) }}
  </div>
</div>

form.addresses.vars.valid始終為true,並且form_errors(form.addresses)為空

編輯:在M2M關系中定義了控制器中觸發的錯誤。

我得到一個簡單的形式驗證:

if ($form->isSubmitted()) {
    if ($form->isValid()) {
     }

    $this->addFlash('danger', $translator->trans('the.form.contains.errors'));
}

調試器向我展示了它觸發的正確錯誤:

ConstraintViolation {#1409 ▼
  -message: "Au moins une adresse est requise"
  -messageTemplate: "at.least.one.address.is.required"
  -parameters: [▼
    "{{ count }}" => 0
    "{{ limit }}" => 1
  ]
  -plural: 1
  -root: Form {#1196 ▶}
  -propertyPath: "data.addresses"
  -invalidValue: ArrayCollection {#870 …}
  -constraint: Count {#729 …}
  -code: "bef8e338-6ae5-4caf-b8e2-50e7b0579e69"
  -cause: null
}

Edit2:在調試器的“表單”選項卡中,簡單字段錯誤綁定到相同的字段(名稱)。 但是,M2M錯誤奇怪地綁定到實體(俱樂部)而不是地址字段,如圖所示: 在此處輸入圖片說明

如果在父級上顯示字段錯誤,那是因為該錯誤是“冒泡”。

在您的表單構建器中,嘗試為addresses字段添加將error_bubbling選項設置為false ,這樣應該將其顯示在字段級別。

有關更多詳細信息,請參見文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM