Laravel管理员 - 在edit_fields中自定义选择

时间:2014-08-02 18:49:45

标签: laravel

使用Laravel Administrator软件包并遵循以下文档: http://administrator.frozennode.com/docs/fields#setter-option

处理2个Eloquent模型:
- 制造商
- ManufacturerModel(制造商的产品)

我的目标是能够将“设置者”字段添加到“编辑字段”中。在制造商页面上将显示所有制造商的下拉列表。然后,该字段将用于自定义操作,以将所有相关的ManufacturerModel重新分配给从列表中选择的制造商(如果名称有重复或变化)。制造商列表将与选定的要编辑的雄辩模型相同。

有人知道可以在这里使用的自定义选择吗?我已经尝试了下面的代码,但在任何一种情况下,我得到一个文本字段而不是下拉。

自定义选择:(型号配置> edit_fields)

're_assign_models_to' => array(
    'setter' => true,
    'title' => 'Re-assign models to',
    'select' => '(:table)',
    'name_field' => 'name',
),

除了将密钥设置为访问者以返回所有制造商Eloquent模型外:

模型配置> edit_fields

'all_manufacturers' => array(
    'setter' => true,
    'title' => 'Re-assign models to',
    'name_field' => 'name',
),

在基础模型中:

public function getAllManufacturers()   { return Manufacturer::all(); }


Screen shot

谢谢!非常感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

得到它......

显然,枚举类型可以与雄辩方法返回的“选项”一起使用。

如果它可以帮助其他人,这是有效的:

're_assign' => array(
    'setter' => true,
    'title' => 'Re-assign models to',
    'type' => 'enum',
    'options' => Manufacturer::orderBy('name', 'asc')->lists('name', 'id')
),

此外 - 自定义操作无效,因为表单数据似乎未传递给自定义操作。但是,在setter追求的模型中创建一个mutator确实有效。

public function setReAssignAttribute($manufacturer) { 

    if(empty($manufacturer))
        return false;

    $this->models()->update(['manufacturer_id' => Manufacturer::where('name', $manufacturer)->first()->id]);

}