2015-06-17 8 views
1

刀片模板:Laravel 5.0:表::选择()所选择的名字叫两声雄辩访问者

{!! Form::model($category) !!} 

    {!! Form::select('drinks_id', [...full list...]) !!} 

{!! Form::close() !!} 

'drinks_id'通过雄辩访问者称为:

public function getDrinksIdAttribute() 
{ 
    var_dump('get'); 
    return 123; 
} 

Form::select('drinks_id')执行getDrinksIdAttribute()调用两次并从打印。

如果我这样写:

{!! Form::model($category) !!} 

    {!! var_dump($category->drinks_id) !!} 

{!! Form::close() !!} 

getDrinksIdAttribute()一次。

这是Form::select()错误,或者我做错了什么?从模型获取价值

回答

1

FormBuilder使用object_get()辅助功能:

/** 
* Get the model value that should be assigned to the field. 
* 
* @param string $name 
* @return string 
*/ 
protected function getModelValueAttribute($name) 
{ 
    if (is_object($this->model)) 
    { 
     return object_get($this->model, $this->transformKey($name)); 
    } 
    elseif (is_array($this->model)) 
    { 
     return array_get($this->model, $this->transformKey($name)); 
    } 
} 

object_get()叫雄辩访问者两次:

object_get() helper function code


解决办法:

{!! Form::model($category) !!} 

    {!! Form::select('drinks_id', [...full list...], $category->drinks_id) !!} 

{!! Form::close() !!}