2013-07-29 2 views
0

Я хочу создать конфигуратор статей с symfony2. В моем первом объекте сохраняются все возможные конфигурации статей.Подтвердить объект доктрины на основе данных другого объекта

Entity PossibleArticleConfiguration
Название: Article One
MinLength: 250 MaxLength: 500
MinWidth: 250
MaxWidth: 500

Объект в моей второй объект выглядит следующим образом:

Предприятие

ConfiguredArticle

Название: Article One

Длина: 300

Ширина: 400

Существуют ли какие-либо рекомендации для проверки объекта ConfiguredArticle на основе минимального и максимального диапазона в Возможной конфигурации конфигурации?

Заранее спасибо

+0

есть отношение как ConfiguredArticle -> PossibleArticleConfiguration (один-ко-многим/один-к-тон)? – nifr

+0

Да, есть отношение ConfiguredArticle/Material OneToMany <-> ManyToOne Возможная статьяConfiguration/Material – user1731323

ответ

0

Я бы создать пользовательское ограничение. Если эти два объекта не связаны с сопоставлениями, вы можете ввести диспетчер объектов. Обратные вызовы также могут работать, если вы сопоставили ассоциации для объектов.

http://symfony.com/doc/current/cookbook/validation/custom_constraint.html

+0

Я использовал пользовательское ограничение, и он работал – user1731323

0

внутри ConfiguredArticle лица вы можете иметь такие методы, как:

public function isLengthValid(ExecutionContextInterface $context) { 
    if ($this->getLength < $this->getArticleConfiguration()->getMinLength()) { 
     $context->addViolationAt('length', 'The length does not satisfy the minimum length', array(), null); 
    } 
    if ($this->getLength > $this->getArticleConfiguration()->getMaxLength()) { 
     $context->addViolationAt('length', 'The length does not satisfy the maximum length', array(), null); 
    } 
} 

public function isWidthValid(ExecutionContextInterface $context) { 
    if ($this->getWidth < $this->getArticleConfiguration()->getMinWidth()) { 
     $context->addViolationAt('width', 'The width does not satisfy the minimum width', array(), null); 
    } 
    if ($this->getWidth > $this->getArticleConfiguration()->getMaxWidth()) { 
     $context->addViolationAt('width', 'The width does not satisfy the maximum width', array(), null); 
    } 
} 

Подробнее о том, как использовать методы обратного вызова для проверки на этой странице: http://symfony.com/doc/current/reference/constraints/Callback.html

Смежные вопросы