Я использую валидатор обратного вызова в Symfony 2.0.4 для проверки коллекции встроенных форм. Я пытаюсь увидеть, дублируется ли одно из полей форм в любой из форм и если да, чтобы добавить ошибку в это поле.
Вот код: < /p>
/**
* @Assert\Callback(methods={"isPriceUnique"})
*/
class Pricing {
protected $defaultPrice;
protected $prices;
public function isPriceUnique(ExecutionContext $context){
//Get the path to the field that represents the price collection
$propertyPath = $context->getPropertyPath().'.defaultPrice';
$addedPrices = $this->getPrices();
\array_unshift($addedPrices, $this->getDefaultPrice());
for($i=0; $igetCountry();
//Check for duplicate pricing options(whose country has been selected already)
if($isetPropertyPath($propertyPath.'.'.$j.'.country');
$context->addViolation('product.prices.unique', array(), null);
break;
}
}
}
}
}
< /code>
Поле ценого $ - это множество ценных организаций, каждый из которых имеет собственность страны. Страна также добавлена и в тип формы.
Я хотел бы добавить ошибку только в собственность страны, но, похоже, Symfony не позволяет мне указать что -то более сложное, чем $ Propertypath. '.field'.
Может ли кто -нибудь сказать мне, какой синтаксис для $ propertypath, который позволил бы мне указать поле, установленное на более низком уровне в иерархии? < /p>
обновление:
Кажется, что проверка выполняется должным образом и после изучения конструктора класса Propertypath Я уверен, что путь, который я используется правильно. Проблема заключается в том, что указанное сообщение не отображается на местах страны, как и ожидалось.
Подробнее здесь: https://stackoverflow.com/questions/132 ... y-of-field
Symfony2 -обратный валидация установила ошибка на свойство поле ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение