使用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(); }
谢谢!非常感谢您提供的任何帮助!
答案 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]);
}