Laravel-如何在编辑表单的选择下拉列表中显示子目标类型名称

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; 模型 控制

在我的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;
模型

控制器

    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