【问题标题】:Route Action Method in Laravel 5.4Laravel 5.4 中的路由操作方法
【发布时间】:2017-12-07 10:53:19
【问题描述】:

我正在尝试对路线进行操作前检查。因此我设置了一个中间件如下:

<?php

namespace App\Http\Middleware;

use Closure;
use Route;

class PermissionMiddleware
{
/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
   list(, $action) = explode('@', Route::getCurrentRoute()->getActionName());

    return $next($request);
}
}

在我的控制器中,我执行以下操作:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Blog;
use Image;
use File;
use Route;

class BlogController extends Controller
{

public function __construct()
{
    $this->middleware(['auth','permission']);
}


public function create()
{       
   .......
   .......
}

而我的路线如下:

Route::get('create/news',"BlogController@create");

但是,当我导航到该路线时,它会显示如下错误:

给出一个例外如下:

FatalErrorException 在 null 上调用成员函数 getActionName() 在 PermissionMiddleware.php(第 19 行)

我试图解决这个问题。

【问题讨论】:

标签: php laravel-5 laravel-routing laravel-middleware


【解决方案1】:

再次阅读错误消息,您会发现问题。

错误是:

FatalErrorException Call to a member function getActionName() on null in PermissionMiddleware.php (line 19)

在第 19 行,我猜你有这个:

list(, $action) = explode('@', Route::getCurrentRoute()->getActionName());

这意味着错误来自这里:“Route::getCurrentRoute()->getActionName()”。

Route::getCurrentRoute() 返回空值。因此,您从 null 调用方法“getActionName()”。

请检查方法“getCurrentRoute()”以解决问题。 祝你好运。

【讨论】:

  • 是的。你说的对。 Route::getCurrentRoute() 返回 null,我不知道原因。有什么线索说明为什么会发生这种情况?
  • 谢谢,但我以前确实看到过。但我正在寻找的是 routeAction() 而不是 routeName() 并且您提到我的链接正在讨论 routeName() 而不是
猜你喜欢
  • 2017-10-22
  • 2017-06-29
  • 1970-01-01
  • 2017-08-09
  • 2018-03-25
  • 1970-01-01
  • 2017-09-20
  • 2018-02-26
  • 2018-04-05
相关资源
最近更新 更多