获取laravel中create方法的参数值时返回null
我有一个接受参数的自定义路由。即:获取laravel中create方法的参数值时返回null,laravel,laravel-5,laravel-5.1,laravel-5.2,vue.js,Laravel,Laravel 5,Laravel 5.1,Laravel 5.2,Vue.js,我有一个接受参数的自定义路由。即: Route::get('reservation/{id}/create', ['as' => 'reservation.create', 'uses' => 'ReservationController@create' ]); 我有一个受保护的变量$student\u id。该id被分配给ReservationController的create方法的参数,如下所示: class ReservationController ext
Route::get('reservation/{id}/create',
['as' => 'reservation.create', 'uses' => 'ReservationController@create'
]);
我有一个受保护的变量$student\u id。该id被分配给ReservationController的create方法的参数,如下所示:
class ReservationController extends Controller
{
protected $student_id;
public function index()
{
return $this->student_id;
}
public function create($id)
{
$this->student_id = $id;
$subjects = Subject::with('sections')->get();
return view('reservation.form',compact('subjects'));
}
public function store(Request $request)
{
$subject = new Reservation();
$subject->section_subject_id = $request->sectionSubjectId;
$subject->student_id = $this->student_id;
$subject->save();
}
}
在create方法上返回$id参数时,我得到了确切的id号。我还用$student\u id分配了$id。但是在store方法上分配$student\u id时,我得到了null值。我知道我做错了,有人能帮我一下吗
好的,让我添加一些信息:在我的url中使用reservation.create路由时,我有一个地址localhost:8000/reservation/1/create
该url中的数字1是我想要获取并分配给我的store方法中的student_id的学生id
我也有这个表单视图:
form.blade.php
<body>
@foreach($subjects as $subject)
@foreach($subject->sections as $section)
<tr>
<td>{{ $section->section_code }}</td>
<td>{{ $subject->subject_code }}</td>
<td>{{ $subject->subject_description }}</td>
<td>{{ $section->pivot->schedule }}</td>
<td>{{ $subject->units }}</td>
<td>{{ $section->pivot->room_no }}</td>
<td>
<button
v-on:click="addSubject( {{ $section->pivot->id }} )"
class="btn btn-xs btn-primary">Add
</button>
<button class="btn btn-xs btn-info">Edit</button>
</td>
</tr>
@endforeach
@endforeach
</body>
您正在尝试将变量保存在
$this->student\u id
中,稍后在另一个方法中使用它。这不是它的工作原理。问题是这些方法在不同的HTTP请求中使用,所以不会保留变量
您应该将此变量从reservation.form
视图传递到store()
方法
public function store(Request $request, $studentId)
{
echo $studentId;
您可以使用请求对象来实现这一点。从某种角度来看:
<input name="studentId" type="hidden">{{ $studentId }}</input>
或者,如果要在store()
方法中使用它,可以将其作为第二个参数传递
public function store(Request $request, $studentId)
{
echo $studentId;
您正在尝试将变量保存在
$this->student\u id
中,稍后在另一个方法中使用它。这不是它的工作原理。问题是这些方法在不同的HTTP请求中使用,所以不会保留变量
您应该将此变量从reservation.form
视图传递到store()
方法
public function store(Request $request, $studentId)
{
echo $studentId;
您可以使用请求对象来实现这一点。从某种角度来看:
<input name="studentId" type="hidden">{{ $studentId }}</input>
或者,如果要在store()
方法中使用它,可以将其作为第二个参数传递
public function store(Request $request, $studentId)
{
echo $studentId;
因为学生id为空,所以使用$subject->student\u id=$request->id;或者$request->student\u id或由于student\u id为空而使用的任何名称,请使用$subject->student\u id=$request->id;或者$request->student\u id或您使用的任何名称是的,为什么不?此外,您还可以使用现有代码,将
studentId
添加到sectionSubjectId
旁边,并以与获取sectionSubjectId
相同的方式从请求对象获取它。谢谢。我考虑过安全问题。但是忘了这一点。问题是在我的form.blade上的addSubject方法上传递两个参数似乎不起作用。我所做的是{{$section->pivot->id$student\u id}。我遗漏了什么吗?好的,我把它添加到了主题({{$section->pivot->id},{{$student\u id})。是的,为什么不呢?此外,您还可以使用现有代码,将studentId
添加到sectionSubjectId
旁边,并以与获取sectionSubjectId
相同的方式从请求对象获取它。谢谢。我考虑过安全问题。但是忘了这一点。问题是在我的form.blade上的addSubject方法上传递两个参数似乎不起作用。我所做的是{{$section->pivot->id$student\u id}。我在这里遗漏了什么吗?好的,我在这里添加了主题({{$section->pivot->id},{{$student\u id})。