相同项目多次的下拉列表

时间:2019-03-09 23:58:19

标签: php laravel

在我的下拉列表下面显示不正确,并且我不知道问题出在哪里。可以在我的SerieController中吗?我想创建一个编辑/更新系统,但没有成功。

enter image description here

SerielController

public function edit($id)
    {
        $series = Serie::find($id);
        $marks = Mark::find($id);
        return view('admin.series.edit', compact('series', 'marks'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
        'name' => 'required|string',
        'fk_mark' => 'required'
        ]);

        $series = Serie::find($id);
        $marks = Mark::find($id);
        $series->name = $request->get('name');
        $series->fk_mark = $request->get('fk_mark');
        $series->save();
        return redirect()->route('series.index')
                   ->with('success', 'updated successfully');
    }

文件 series.edit.blade

<form class="panel-body" action="{{route('series.update',$series->id)}}" method="POST">
<input name="_method" type="hidden" value="PATCH">
@csrf
<fieldset class="form-group">
<label for="form-group-input-1">Name</label>
<input type="text" name="name" class="form-control" id="form-group-input-1" value="{{$series->name}}">
</fieldset>

<div class="form-group">
<label for="company-content">Select Mark</label>
<select name="fk_mark" id="" class="form-control">
@foreach($series->marks as $mark)
<option value="{{$marks->id}}">
{{$marks->name_mark}}
</option>
@endforeach
</select>
</div>

模型系列

class Serie extends Model
{

    protected $fillable = ['name', 'fk_mark'];

    public function marks(){

        return $this->belongsTo('App\Mark', 'fk_mark');

    }

}

意甲(Serie Mark)

class Mark extends Model
{

    protected $fillable = ['name_mark'];

    public function series(){
        return $this->hasMany('App\Serie', 'fk_mark');
    }


    public function cars(){
     return $this->hasMany('App\Car','fk_serie');
   }

}

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

在您的foreach中您犯了一个错误,该变量应为$mark而不是$marks

<select name="fk_mark" id="" class="form-control">
   @foreach($marks as $mark)
   <option value="{{$mark->id}}">
   {{$mark->name_mark}}
   </option>
   @endforeach
</select>

在编辑功能中,您仅向视图发送一个标记,如果希望选择所有标记,则需要全部发送。

public function edit($id)
    {
        $series = Serie::find($id);
        $marks = Mark::all();
        return view('admin.series.edit', compact('series', 'marks'));
    }