Laravel 5.4中的路径操作方法

时间:2017-07-04 05:59:06

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

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

<?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");

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

enter image description here

给出例外如下:

  

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

我试图解决这个问题无济于事。

1 个答案:

答案 0 :(得分:0)

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

错误是:

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

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

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

这意味着错误来自:“Route :: getCurrentRoute() - &gt; getActionName()”。

Route :: getCurrentRoute()返回null。所以你从null调用方法“getActionName()”。

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