0

这是控制器中的方法。它是由 x-editable ajax 请求的。

/**
 * Update base info such as status.
 *
 * @param Request $request
 * @return mixed
 */
public function postUpdateInfo(Request $request)
{
    $this->middleware('recruit');
    dd('passed');
    $recruit = Recruit::find($request->get('pk'));
    list($key, $value) = array($request->get('name'), $request->get('value'));
    if ($recruit->update([$key => $value])) {
        return Response::json(['success' => 1]);
    }
}

在中间件中,代码如下:

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request $request
 * @param  \Closure $next
 * @return mixed
 */
public function handle($request, Closure $next, $permission)
{
    die();
    if (Entrust::can($permission)) {
        return $next($request);
    }

    $this->belongsToMe($request, $this->instance);

    return $next($request);
}

但在 chrome 中,我在网络中查看响应。

在此处输入图像描述

那么,我认为 ajax 请求中忽略了中间件?如此惊人。

非常感谢。

4

2 回答 2

1

您应该将中间件附加到控制器的构造函数中:

public function __construct()
{
    //assign the middleware to all the methods of the controller
    $this->middleware('recruit');
}

或者,如果您只想将其附加到控制器的某些方法,请执行以下操作:

//assign the middleware only to the postUpdateInfo method
$this->middleware('recruit', [ 'only '=> 'postUpdateInfo' ] ]);
于 2016-03-14T08:02:36.480 回答
0

您可以为 404 错误设置回退路由:

Route::fallback('{ CONTROLLER PATH }@error404');

然后,您可以将此方法放入您的控制器中:

public function error404() {
    return view('views.errors.404');
}
于 2020-07-17T12:34:39.947 回答