繁体   English   中英

Laravel 5.0:Form :: select()通过选择名称两次调用Eloquent Accessor

[英]Laravel 5.0: Form::select() called twice Eloquent Accessor by select name

刀片模板:

{!! 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()并从var_dump()打印出string(3) "get" string(3) "get"

如果我这样写:

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

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

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

它一次调用了getDrinksIdAttribute()

这是Form::select()错误,还是我做错了什么?

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() Accessor:

object_get()辅助函数代码


解决方案:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM