【问题标题】:Laravel 5.1 UrlGenerator route not defined errorLaravel 5.1 UrlGenerator 路由未定义错误
【发布时间】:2016-01-30 05:14:17
【问题描述】:

我有一个使用 Laravel 5.1 构建的应用程序。我正在使用 Form::open 使用 route_name 来生成将表单发布到的 url,并通过定义路由和使用 UrlGenerator 创建链接。问题是我为显示目的创建了一些按钮/链接,但尚未创建页面。

我得到一个路由未定义错误,堆栈跟踪返回到 UrlGenerator 第 296 行。我想要设置一些东西,以便不显示错误。相反,我希望生成一个指向我创建的预定义页面的链接,说明用户单击的功能尚未开发。

我想过做一些类似于 404 错误的事情,但问题是现有页面(链接或按钮所在的页面)未显示,而不仅仅是缺少该路线。

例如,在下面,我创建了一个指向“broker_contact_create”路由的链接,由于该路由不存在,因此显示该链接的页面将不会加载。相反,我收到错误消息:

UrlGenerator.php 第 296 行中的 ErrorException:路由 [broker_contacts_create] 未定义。 (看法: index.blade.php)

<div class="col-md-6 col-lg-7 margin-bottom-15">
    <a href="{{ route('broker_contacts_create') }}" class="btn btn-success btn-icon-plus">+ Add Contact</a>

</div>

相反,我希望显示该页面。当用户单击缺少路由的链接时,将他们路由到一个页面,该页面告诉用户他们单击了指向尚未启用的功能的链接。

所以基本上我只想这样做:如果找不到路由,则提供 $url。

【问题讨论】:

  • 你能在你生成所有这些的地方发布一些你的视图代码吗?

标签: laravel laravel-5 routing laravel-5.1 laravel-routing


【解决方案1】:

如果您跟踪堆栈跟踪,您会看到route 函数基本上调用了UrlGenerator-&gt;route

https://github.com/laravel/framework/blob/5.1/src/Illuminate/Routing/UrlGenerator.php#L300

检查是否存在同名路由,如果不存在,则抛出InvalidArgumentException

基本上,您尝试做的事情是不可能的。如果您想使用route 函数,您必须定义该路由。

我认为您最好的选择是设置“功能未开发”视图,并将所有这些待处理的路线指向该视图。这样您就可以使用route 函数。您的链接/按钮将被生成,但会将它们带到“尚未开发”的页面。这样做的另一个好处是您的所有路线都已布置好,您可以轻松查看哪些路线需要开发。

Route::get('/brokers/contacts/create', ['uses' => 'HomeController@notDeveloped', 'as' => 'broker_contact_create']);

在您的 HomeController 内部:

public function notDeveloped() {
    return view('pages.not_developed');
}

【讨论】:

    猜你喜欢
    • 2017-05-15
    • 2017-11-23
    • 2018-06-27
    • 2019-01-15
    • 2021-05-01
    • 2016-01-12
    • 2015-10-04
    • 2016-01-24
    • 1970-01-01
    相关资源
    最近更新 更多