Что вам нужно сделать, это установить ключ для значения Нет в поле выбора на 0 .
Вы должны оставить not_empty Правило для поля.Тогда у вас должно быть правило для поля, которое гарантирует, что это допустимое значение для product_methodology или ноль.
Я расширяю ORM и выполняю следующие две функции:
public function exists_or_zero(Validation $validation, $field, $model, $pk)
{
// The exists() function is only called if the field has a non-zero value
if ($validation[$field]) {
$this->exists($validation, $field, $model, $pk);
}
}
public function exists(Validation $validation, $field, $model, $pk)
{
if ( ! ORM::factory($model, $pk)->loaded()) {
$validation->error($field, 'exists', array($validation[$field]));
}
}
Если бы вы использовали эти функции, ваши правила в классе product выглядели бы так:
public function rules()
return array(
'product_methodology_id' => array(
array('not_empty'),
array(array($this, 'exists_or_zero'), array(':validation', ':field', 'product_methodology', ':value')),
),
);
}