两次调用控制器的laravel路由

时间:2017-07-08 21:30:45

标签: php laravel wamp artisan

我还在学习laravel,并创建了一个v5.4.28的项目,也用dev v5.5测试了两个版本调用控制器两次,从而插入2条记录。 只有在我使用WAMP并访问http://localhost/laravel/public/test?test=123

时才会发生这种情况

如果我使用php artisan服务并访问此内容 http://127.0.0.1:8000/test?test=123 它只插入一次

如果我使用chrome检查并查看我的网络标签,我会看到该页面在wamp上被调用两次。

这是正常的吗?

编辑我的routes / web.php到

Route::get('/', function () {
return view('home');
});
Route::get('/test', 'testController@store');

并创建了一个testController

class testController extends Controller
{
    public function store()
    {
        $test = new Test;
        $test ->user_id = request('test');
        $test ->save();

        //if i put a redirect here then it wont insert twice
    }
}

1 个答案:

答案 0 :(得分:0)

如果您有中间件对next进行了两次调用,也可能会发生这种情况。例如,假设您具有父中间件的handle函数,如下所示:

public function handle($request, Closure $next, ...$guards){
    // Your logic here
    return $next($request);
}

现在,假设您具有以下子中间件:

public function handle($request, Closure $next, ...$guards){
    // Note this call to the parent's next
    $resp = parent::handler($request, $next, $guards);
    // Extra logic here
    // ... and now we make another call to next
    return $next($request);
}

为避免这种情况,请确保在中间件的handle函数中一次调用next

https://laracasts.com/discuss/channels/laravel/controller-methods-called-twice-causing-duplicate-database-entries