Laravel-如何在编辑表单的选择下拉列表中显示子目标类型名称
在我的Laravel-5.8项目中,我试图在编辑表单中选择列表上的子名称(文本) 我有这张桌子:Laravel-如何在编辑表单的选择下拉列表中显示子目标类型名称,laravel,Laravel,在我的Laravel-5.8项目中,我试图在编辑表单中选择列表上的子名称(文本) 我有这张桌子: CREATE TABLE `goal_types` ( `id` int(11) NOT NULL, `name` varchar(200) NOT NULL, `parent_id` int(11) DEFAULT NULL, `max_score` int(11) DEFAULT 0, ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 模型 控制
CREATE TABLE `goal_types` (
`id` int(11) NOT NULL,
`name` varchar(200) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`max_score` int(11) DEFAULT 0,
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
模型
控制器
public function index()
{
$categories = GoalType::with('children')->whereNull('parent_id')->get();
return view('goal_types.index')->with('categories', $categories);
}
public function create()
{
return view('goal_types.create');
}
public function store(StoreGoalTypeRequest $request)
{
$data = GoalType::create([
'name' => $request->name,
'parent_id' => $request->parent_id,
'max_score' => $request->max_score,
]);
Session::flash('success', 'Goal Type is created successfully');
return redirect()->route('goal_types.index');
}
我有一个编辑的模态形式
看法
目标类型
@foreach($categories作为$category)
-
@如果($category->children)
@foreach($category->children as$child)
-
{{$child->name}
@can(‘目标\类型\编辑’)
编辑
@恩德坎
@endforeach
@恩迪夫
@endforeach
编辑目标类型
@csrf
@方法('PUT')
父目标类型:
选择目标类型
@foreach($categories作为$category)
{{$category->name}
@endforeach
姓名:*
最大重量(%):
接近
更新
当我从索引中单击edit(编辑)时,会弹出一个模式表单来显示子名称,其中父id等于数据库中的父id。但是,直到我单击select下拉列表时,select下拉列表值/文本才显示任何内容
如何修改
@foreach ($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
@foreach($categories作为$category)
{{$category->name}
@endforeach
在编辑中实现这一点(在下拉列表中显示选择子项的名称)
谢谢在编辑视图中,您必须在表单操作中传递类别id,如下所示
操作=“{{route('admin.categories.update',$category->id)}”
然后将其与父级id进行比较,并且在类别模型中您必须传递子级。类别模型:
public function children()
{
return $this->hasMany(GoalType::class, 'parent_id' , 'id')->with('children');
}
edit.blade.php视图<div class="col-md-12">
<label for="parent_id" class="form-control-label">parents category name</label>
<select class="form-control" data-toggle="select" data-live-search="true" name="parent_id" id="parent_id">
<option value="0" {{ $category->parent_id === 0 ? 'disabled' : '' }} selected> - Default</option>
@foreach(\App\Models\Category::latest()->get() as $cate)
<option value="{{ $cate->id }}" {{ $cate->id === $category->parent_id ? 'selected' : '' }} {{ $cate->id === $category->id ? 'disabled' : '' }} {{ $cate->id === $category->parent_id ? 'disabled' : '' }}>{{ $cate->name }}</option>
@endforeach
</select>
</div>
父类别名称
父项id==0?“已禁用“:”}}已选择>-默认值
@foreach(\App\Models\Category::latest()->get()作为$cate)
id==$category->parent\u id?“所选“:”}{{$cate->id===$category->id?已禁用“:”}{{{$cate->id===$category->parent_id?已禁用“:”}>{{{$cate->name}
@endforeach
在编辑视图中,您必须在表单操作中传递类别id,如下所示操作=“{{route('admin.categories.update',$category->id)}”
然后将其与父级id进行比较,并且在类别模型中必须传递子级。类别模型:
public function children()
{
return $this->hasMany(GoalType::class, 'parent_id' , 'id')->with('children');
}
edit.blade.php视图<div class="col-md-12">
<label for="parent_id" class="form-control-label">parents category name</label>
<select class="form-control" data-toggle="select" data-live-search="true" name="parent_id" id="parent_id">
<option value="0" {{ $category->parent_id === 0 ? 'disabled' : '' }} selected> - Default</option>
@foreach(\App\Models\Category::latest()->get() as $cate)
<option value="{{ $cate->id }}" {{ $cate->id === $category->parent_id ? 'selected' : '' }} {{ $cate->id === $category->id ? 'disabled' : '' }} {{ $cate->id === $category->parent_id ? 'disabled' : '' }}>{{ $cate->name }}</option>
@endforeach
</select>
</div>
父类别名称
父项id==0?“已禁用“:”}}已选择>-默认值
@foreach(\App\Models\Category::latest()->get()作为$cate)
id==$category->parent\u id?“所选“:”}{{$cate->id===$category->id?已禁用“:”}{{{$cate->id===$category->parent_id?已禁用“:”}>{{{$cate->name}
@endforeach