您应该做的是将选择框中的None值的键设置为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]));
}
}
如果您要使用这些功能,您在产品类中的规则将如下所示:
public function rules()
return array(
'product_methodology_id' => array(
array('not_empty'),
array(array($this, 'exists_or_zero'), array(':validation', ':field', 'product_methodology', ':value')),
),
);
}