[英]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.