Класс действий имеет свойство, которое необходимо проверить. Свойство является классом (MyClass1), одно из свойств которого также является классом (MyClass2).
Каждый из проверяемых классов будет использоваться несколькими действиями, поэтому я определил для каждого «MyClass*-validation.xml».
Проблема, с которой я сталкиваюсь, заключается в попытке использовать валидатор посетителей в MyClass1 для проверки MyClass2.
MyAction-validation.xml:
<validators>
<field name="class1">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
MyClass1-validation.xml:
<validators>
<field name="class2">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
MyClass2-validation.xml:
<validators>
<field name="myInt">
<field-validator type="conversion">
<message>myInt conversion</message>
</field-validator>
</field>
</validators>
Если я отправлю форму с полем class1.class2.myInt="a", fieldErrors() не будет содержать ошибку преобразования, как я и ожидал.
Можно ли связать валидаторов посетителей бесконечно, или максимум один уровень посетителя? Если можно, то что я делаю не так?
Нежелательное (на мой взгляд) решение/обходной путь: поскольку я не мог понять, что я делаю неправильно, я в конце концов попытался не связывать проверку из MyClass1-validation.xml в MyClass2-validation.xml и вместо этого изменил определение MyAction. -проверка.xml:
<validators>
<field name="class1.class2">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
<field name="class1">
<field-validator type="visitor">
<message></message>
</field-validator>
</field>
</validators>
Это изменение решило проблему (fieldErrors() теперь содержит ошибку преобразования), но я бы предпочел иметь возможность связывать валидаторы в цепочку, как это было моим первоначальным намерением.