将数据从刀片服务器传递到控制器Laravel

时间:2018-11-09 16:03:27

标签: php laravel controller laravel-blade

我想将对象从刀片文件传递到控制器文件。目的是当用户单击编辑按钮时,用户将获得一个填充有先前输入数据的表单。我在刀片文件中使用以下代码:

<a href="/feestype/{{ $feesType->id }}/edit" class="btn btn-info btn-sm">Edit</a>

但是当我想从控制器的edit方法中获取传递的对象时,我得到的是null。我的控制器代码现在是这样的:

public function edit(FeesType $feesType)
{
    //
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

在这里,我已经转储了$ feesType对象,但是得到了一个空值。请帮助我如何解决此问题。 预先感谢

4 个答案:

答案 0 :(得分:1)

路由模型绑定的工作原理有些不同,这里是documentation

您需要做的是这样的路线:

Route::get('feestype/{feesType}/edit', 'YourController@edit')->name('feestype.edit');

然后您认为

<a href="{{ route('feestype.edit', $feesType) }}" class="btn btn-info btn-sm">Edit</a>

-编辑

使用资源文件:

Route::resource('feestype', 'YourController')

链接的构建方式与上面相同:

{{ route('feestype.edit', $feesType) }}

答案 1 :(得分:1)

您应该将路线更改为:

Route::put('feestype/{id}/edit', 'YourController@edit');

对于更新和编辑,应使用put not get。

请注意,此代码:

<a href="/feestype/{{ $feesType->id }}/edit" class="btn btn-info btn-sm">Edit</a>

首先,您应该在YourController中压缩$ feestype,然后在Blade中使用您的代码。

答案 2 :(得分:0)

现在刀片文件中的代码是

<a href="{{ route('feestype.edit',$feesType) }}" class="btn btn-info btn-sm">Edit</a>

控制器文件包含以下代码:

public function edit(FeesType $feesType)
{
    //
    $feesType = FeesType::find($feesType->id);
    dump($feesType->name);
    return view('feestype.edit',['feesType'=>$feesType]);
}

这是我的路线定义:

Route::resource('feestype','FeesTypesController');

浏览器显示以下消息: enter image description here

答案 3 :(得分:0)

FeesType {#283 ▼
  #fillable: array:2 [▶]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: []
  #original: []
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #guarded: array:1 [▶]
}