Laravel 5.1 UrlGenerator 路由未定义错误
Posted
技术标签:
【中文标题】Laravel 5.1 UrlGenerator 路由未定义错误【英文标题】:Laravel 5.1 UrlGenerator route not defined error 【发布时间】: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。
【问题讨论】:
你能在你生成所有这些的地方发布一些你的视图代码吗? 【参考方案1】:如果您跟踪堆栈跟踪,您会看到route
函数基本上调用了UrlGenerator->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');
【讨论】:
以上是关于Laravel 5.1 UrlGenerator 路由未定义错误的主要内容,如果未能解决你的问题,请参考以下文章