Fix drop down empty arrays being treated as nothing, add advanced callable array to get options from model

This commit is contained in:
Sam Georges 2014-06-01 10:15:33 +10:00
parent 6d190c3ef5
commit c1e2e81d65
1 changed files with 9 additions and 3 deletions

View File

@ -593,7 +593,13 @@ class Form extends WidgetBase
*/
private function getOptionsFromModel($field, $fieldOptions)
{
if (!$fieldOptions) {
if (is_array($fieldOptions) && is_callable($fieldOptions)) {
return call_user_func($fieldOptions, $this, $field);
}
elseif (is_array($fieldOptions)) {
return $fieldOptions;
}
elseif (!$fieldOptions) {
$methodName = 'get'.studly_case($field->columnName).'Options';
if (!method_exists($this->model, $methodName) && !method_exists($this->model, 'getDropdownOptions'))
throw new ApplicationException(Lang::get('backend::lang.field.options_method_not_exists', ['model'=>get_class($this->model), 'method'=>$methodName, 'field'=>$field->columnName]));
@ -610,7 +616,7 @@ class Form extends WidgetBase
$fieldOptions = $this->model->$fieldOptions($field->value, $field->columnName);
}
return $fieldOptions;
return [];
}
/**