Laravel路线表致命投掷错误

时间:2018-08-04 05:25:25

标签: php laravel laravel-5.2 artisan

我可以在控制台中列出我的所有路由,但是当我将其添加到route.php时,出现致命错误

   Route::group(['middleware' => 'is_admin', 'prefix' => 'admin', 'as'=>'admin.'], function () {
        Route::get('/',         ['as'=>'dashboard', 'uses'=>'AdminController@dashboard']);
        Route::resource('questions','QuestionController');
    });

enter image description here

,这是在我的Middleware / IsAdmin.php中     

namespace App\Http\Middleware;

use Closure;

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(auth()->user()->isAdmin()) {
            return $next($request);
        }
        return redirect('home');
    }
}

更新2 即使我只有这个,它仍然会出错。

Route::group(['middleware' => 'is_admin', 'prefix' => 'admin', 'as'=>'admin.'], function () {
    Route::get('/',         ['as'=>'dashboard', 'uses'=>'AdminController@dashboard']);
});

更新3-AdminController

...
class AdminController extends Controller
{
    private $page_name;

    public function __construct()
    {
        $this->middleware('auth');
        //when I comment this below, it works.
        $this->page_name = ucfirst(substr(\Request::route()->getName(), strpos(\Request::route()->getName(), "/") + 1)); 
    }
...

enter image description here

1 个答案:

答案 0 :(得分:0)

这里的问题是你有

$this->page_name = ucfirst(substr(\Request::route()->getName(), strpos(\Request::route()->getName(), "/") + 1));

在控制器构造函数中(您已经注意到)。

使用控制台时,您没有任何路由,因此无法使用。

如果您确实需要此行,则可以附加其他条件:

if (!app()->runningInConsole())
{
    $this->page_name = ucfirst(substr(\Request::route()->getName(), strpos(\Request::route()->getName(), "/") + 1));
}

但是您也可以将此行提取到单独的方法中,并在需要时在其他方法中使用它。