我對使用自定義屬性路徑定義的字段的錯誤映射有問題。我的情況如下:Symfony窗體:使用自定義屬性路徑的字段的錯誤映射
形式類型:
class MyFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add(
'aField',
TextType::class,
['property_path' => 'anObject.aProperty']
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([ 'data_class' => FormData::class ]);
}
}
表單數據類:
class FormData
{
/**
* @var MyObject
* @Assert\Valid
*/
public $anObject;
}
表單數據嵌套對象:
class MyObject
{
/**
* @var string
* @Assert\NotBlank
*/
public $aProperty;
// NOTE: this object has other properties that are not mapped by my form and I'm not listing here for the sake of brevity.
}
我的問題是以下情況:當違規發生在aProperty
時,違規路徑爲data.anObject.aProperty
,因此錯誤不會自動映射到aField
表單字段。我明白,從「vanilla」驗證的角度來看,這是正確的,但我希望某種形式的翻譯層可以根據property_path
屬性調整映射,以便將表單錯誤附加到正確的字段。我嘗試着與error_mapping
選項雜耍,但事實證明這不是它製造的。
我錯在期待這種「默認」行爲?你認爲這可能被認爲是一個錯誤,或者至少是一個值得請求的功能請求?有人需要處理類似的情況並找到解決方案嗎?
什麼是'aField'?它是否映射'anObject'或不?似乎並不清楚。 – DonCallisto
正如您在下面的類中看到的那樣,'aField'映射到'anObject'的'aProperty',它本身就是表單data類的一個屬性。 –
被映射...在哪裏?我沒有在你的類中看到任何'aField' :)這就是我的意思 – DonCallisto