我正在尝试对路线进行行动前检查。因此我设置了一个中间件如下:
<?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行)
我试图解决这个问题无济于事。
答案 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()”以解决问题。 祝你好运。