我是Laravel的新手,为我的应用程序设置更新时遇到了一些问题。我试图通过路由将ID从视图传递到控制器,以选择特定的行,然后,我需要从控制器传递到另一个视图。 Idk我在哪里做错了。
这是我的传递了id的视图代码:
@forEach($line as $data)
<tr>
<td><a href="{{route('edit.line', ['id', $data->id])}}"><i class="icon ion-md-create"></i></a></td>
<td>{{$data->name}}</td>
<td>{{$data->time}}</td>
</tr>
@endforEach
这是路线:
Route::get('/lineEdit/{id}', 'LineController@formEdit')->name('edit.line')->middleware('auth');
这是路线中的控制器功能:
public function formEdit($id){
$line = Line::find($id);
$lineUp = Line::select('*')
->where('id', $line)->get();
return view('lineEdit')->with('line', $lineUp);
}
这是将接收数组的部分视图:
<div class="card-body">
@forEach($line as $data)
<form method="POST" action="{{route('update.line', $data->id)}}">
@csrf
<div class="form-group row">
<label for="name" class="col-md-4 col-form-label text-md-right">
{{__('Name')}}
</label>
<div class="col-md-8">
<input type="text" name="name" class="form-control {{$errors->has('name') ? 'is-invalid' : ''}}" value={{$data->name}} required autofocus >
@if($errors->has('name'))
<span class="invalid-feedback" role="alert">
<strong>{{$errors->first('name')}}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="time" class="col-md-4 col-form-label text-md-right">
{{__('Time')}}
</label>
<div class="col-md-8">
<input type="number" name="time" class="form-control {{$errors->has('time') ? 'is-invalid' : ''}}" value={{$data->time}} required >
@if($errors->has('time'))
<span class="invalid-feedback" role="alert">
<strong>{{$errors->first('time')}}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Save') }}
</button>
</div>
</div>
</form>
@endforEach
</div>
forEach中的所有内容均不会呈现。我看不到问题。
答案 0 :(得分:1)
在您的控制器中:
public function formEdit($id){
$line = Line::find($id);
return view('lineEdit', compact('line'));
}
我使用compact
method将$ line变量发送到视图。
此外,如果您要编辑线模型,则不需要:
$lineUp = Line::select('*')->where('id', $line)->get();
您只需要此即可找到您的模型:
$line = Line::find($id);
答案 1 :(得分:0)
在您的控制器中尝试:
public function formEdit($id){
$line = Line::find($id);
return View::make('lineEdit', compact('line'));
}
这应将变量$line
传递到您的视图
答案 2 :(得分:-1)
问题似乎出在控制器代码中。
$line = Line::find($id);
如果a)$ id是整数b)$ id是主键c)该键存在于数据库中,则返回Line类的一个对象(仅一个对象!)。
因此,$ line为null或模型对象。下一个查询
$lineUp = Line::select('*')->where('id', $line)->get();
在两种情况下均无法成功
据我了解,您的意图$ id只是一个属性(因为您希望有一组对象)。所以,尝试
$lineUp = Line::select('*')->where('id', $id)->get();