我有一个使用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。
答案 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');
}