Laravel CRUD删除路由参数

时间:2019-06-01 13:05:12

标签: php laravel

Id'喜欢使用CRUD控制器来处理管理员配置文件。我创建了Controller并像这样编辑了route / web.php。

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'as' => 'admin.', 'middleware' => ['auth:admin']], function(){
    Route::resource('profile', 'ProfileController')->only(['index', 'edit', 'update', 'destroy']);
});

这将创建以下路线。

teacher/profile -> teacher.profile.index
teacher/profile/{profile} -> teacher.profile.destroy
teacher/profile/{profile} -> teacher.profile.update
teacher/profile/{profile}/edit -> teacher.profile.edit

因为我是通过会话获取admin_id的,所以不需要通过profile参数通过URL获取它。我知道我可以忽略该参数,但这会使URL不再冗长。 是否有可能从路线中删除{profile}参数,所以我的路线类似于 teacher / profile / edit ,而不是 teacher / profile / 12345678 / edit

3 个答案:

答案 0 :(得分:2)

对于单独的操作,您可以使用单独的路由而不是资源。 喜欢

For index operation you can use:-
Route::get('profile', 'ProfileController@index');
For destroy operation you can use:-
Route::delete('profile', 'ProfileController@destroy');
For edit operation you can use:-
Route::put('profile', 'ProfileController@edit');

您可以在输入中或从会话中发送admin_id。 希望它对您有用:)

答案 1 :(得分:0)

  • 是的,您可以从路线中删除该垂直参数。
  • 但是与此相反,您必须通过post变量发送配置文件数据
  • 这不可能在每个重定向中发送帖子数据。

我建议您使用“ Slugs”代替个人资料ID

答案 2 :(得分:0)

是的,如果您首先在控制器中调用所需的配置文件,则可以删除{profile}部分,例如:

public function edit(){
    $teacher = Auth::user();
    return view('teacher.profile.edit', compact('teacher'));
}

在查看页面(教师/个人资料/编辑)中,您可以像这样调用数据:

<form method="post" action="{{ route('teacher.profile.update', $teacher->id) }}">
    @method('PATCH')
    @csrf
    ID: <input type="text" name="id" value={{ $teacher->id}} />
    <button type="submit">Update</button>
</form>

我希望能有所帮助。干杯!