自定义路由在 Laravel 中无法解析

Posted

技术标签:

【中文标题】自定义路由在 Laravel 中无法解析【英文标题】:Custom defined routes not resolving in Laravel 【发布时间】:2016-06-14 14:14:02 【问题描述】:

我有一个 Laravel 5.2 实例,它利用了仪表板、案例、主页、登录/注销和用户的所有典型开箱即用路由(运行良好)。我现在需要创建一个包含步骤(step1、step2、step3 等)的向导,并且我需要访问会话。我将它们分配给组中间件。

Route::group(['middleware' => 'web'], function () 
    Route::get('/', function () 
        // Uses Web middleware
    );
    Route::get('wizard/step1', [
        'as' => 'wizard/step1', 'uses' => 'Wizard\WizardController@getStep1']);
    Route::get('wizard/step2', [
        'as' => 'wizard/step2', 'uses' => 'Wizard\WizardController@getStep2']);
);

但是,当我转到指定路线时,我收到 404 错误。所以 WizardController 如下所示。

namespace App\Http\Controllers\Wizard;

use App\Http\Controllers\Controller;
use App\Http\Requests;

class WizardController extends Controller

    public function __construct()
    
        //$this->middleware('guest');
    

    public function getStep1()
    
        return view('wizard.step1');
    

定义的视图是resources/views/wizard/step1.php。理想情况下,我想重构它,使 Wizard 成为一个单独的组。但是,我目前定义自定义路由的方式似乎没有任何作用。

【问题讨论】:

问题出在你的中间件上。您的 WizardController 中有 quest 中间件,而在您的路由器中,您将它们定义为“auth” 您想访问什么网址?重要的是要知道......还有什么命名的路线,在那个例子中你没有命名的路线。 @lagbox:我正在尝试访问 URL localhost/laravel-project/wizard/step1。我已经添加了命名路线,请看一下。谢谢! 【参考方案1】:

当您缓存路由时会发生这种情况。除非您清除路由缓存,否则您添加的新路由条目将永远不会被识别。

您可以使用php artisan route:clear 删除缓存的路由。

由于您将在开发环境中频繁更改路由,最好不要在开发环境中执行路由缓存。

您可以通过仅在 Git 中将 artisan route:cache 作为部署后挂钩运行,或者将其作为 Forge 部署过程的一部分运行来实现。这样每次您在服务器中部署代码时,您的路由都会自动缓存。

【讨论】:

【参考方案2】:

我通过运行以下命令解决了我的问题:

php artisan route:clear

这可以让 Artisan 删除您的路线缓存,并且您可以确保路线同步。

感谢您的帮助!

【讨论】:

以上是关于自定义路由在 Laravel 中无法解析的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Web api 配置中设置自定义合同解析器

Laravel - JWT Auth 无法从请求中解析令牌

未找到模块:错误:无法解析 | Vue路由器

JavaFx SceneBuilder 2.0 无法解析自定义控件

Visual Studio:无法解析事件/自定义事件工具提示

无法从 deepstream 自定义解析器检索输出