有时laravel会调用另一条路线而不是真实的路线

时间:2016-01-08 05:52:41

标签: laravel laravel-4 laravel-routing

在laravel routes.php文件中,我有以下代码:

// User Resourceful Routing
Route::resource('user','UserController');

默认情况下,delete路由转到show UserController方法。为了克服这个问题,我在laravel routes.php中写了这条路线:

// Delete Users Route
Route::get('user/{user}/{flag}', ['uses' => 'UserController@destroy', 'as'=>'user.destroy'])->before('permission:user_delete');

仍然适用于我,但有时(10次中有2次)它采用show方法UserController代替destroy方法。

// Destroy method
public function destroy($id,$flag='normal'){
}

非常感谢您的建议。

2 个答案:

答案 0 :(得分:2)

您应该使用'delete'方法而不是get。

你可以像这样在laravel中使用。

{!! Form::open(['action' => ['UserController@destroy', $user->id], 'method' => 'delete']) !!}
  {!! Form::submit('Delete User') !!}
{!! Form::close() !!}

如果您使用的是ajax,可以这样使用。

$.ajax({
        type: "DELETE",
        url: 'users/' + user_id,
        success: function(affectedRows) {
        }
    });

如果你不想使用laravel的默认destroy方法,那么你可以使用delete_user方法和post post。

答案 1 :(得分:0)

除了destroy方法之外,

显式定义你的路由而不是使用资源,除了它们是3或4之外。

然而,我会先通过php artisan route:list调试当前路由并检查您的端点。可能你在发送请求时遗漏了某个参数。