获取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})。