Laravel 5.1 UrlGenerator路由未定义错误

时间:2015-10-29 21:19:15

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

我有一个使用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 个答案:

答案 0 :(得分: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');
}