2013-09-10 2 views
1

У меня проблема с проверкой Symfony. У меня есть форма, которая типа User и пользователь отображает некоторые другие вещи (например, Addresses, Phone s и т.д.)Symfony2 Подтверждение сущности - должно быть правдой

Теперь я хочу, чтобы заставить создатель пользователя, что он делает один из Addresses/Phones в первичный (для этого объекта есть поле).

Как я могу это решить? Таким образом, только одна из OneToMany Entitys (одна из Addresses) должна быть основной. И уверяю, что он будет всегда по крайней мере один.

ответ

1

Одним из способов является добавление поля в объект User, указывающий на первичный адрес индивидуальным способом и требующий его.

Другой способ: create a custom validator, который будет проходить через пользовательские адреса и проверять, что по крайней мере один из них отмечен как первичный.

Или вы могли бы просто использовать True constraint:

/** 
* @True 
*/ 
public function isThereOnePrimaryAddress() 
{ 
    $primes = 0; 
    foreach ($this->getAddresses() as $address) { 
     if ($address->isPrimary()) { 
      $primes++; 
     } 
    } 

    if (1 === $primes) { 
     return true; 
    } 

    return false; 
} 
+0

Да, я так и думал. Но как создать пользовательский валидатор, который может проходить через форму или все первичные маркеры. И не только один атрибут? –

+0

Хорошо, я нашел ответ на этот вопрос, или по крайней мере, я сделал это так: /** * @Assert \ True (сообщение = "auth.valid.addresses.oneprime") */ общественная функция isThereOnePrimaryAddress () { $ primes = 0; foreach ($ this-> getAddresses() as $ address) if ($ address-> getPrimaryAddress() == true) $ primes ++; if ($ primes === 1) return true; return false; } Извините, но я не могу опубликовать его в формате. Пожалуйста, отредактируйте его, если сможете. –

+0

Форматирование в комментариях не работает. –

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