Laravel 5.1 UrlGenerator 路由未定义错误

Laravel 5.1 UrlGenerator route not defined error

我有一个使用 Laravel 5.1 构建的应用程序。我正在使用 Form::open 使用 route_name 生成 url 到 post 的表单以及通过定义路由和使用 UrlGenerator 创建 links .问题是我创建了一些 buttons/links 用于显示目的,但尚未创建页面。

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

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

例如,在下面,我创建了一个link到路由"broker_contact_create",因为这个路由不存在,显示link的页面将不会加载。相反,我收到错误消息:

ErrorException in UrlGenerator.php line 296: Route [broker_contacts_create] not defined. (View: 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>

相反,我希望显示该页面。当用户点击 link 到一个丢失的路线时,将他们路由到一个页面,告诉用户他们点击 link 到一个尚未启用的功能。

所以基本上我只是想让它做:如果找不到路线然后提供 $url.

如果您跟踪堆栈跟踪,您会发现 route 函数基本上调用了 UrlGenerator->route

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

检查具有该名称的路由是否存在,如果不存在,则抛出 InvalidArgumentException.

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

我认为您最好的选择是设置一个 "feature not developed" 视图,并将所有这些挂起的路由指向该视图。这样你就可以使用 route 函数了。您的 link/button 将生成,但会将它们带到 "not yet developed" 页面。这样做的另一个好处是,您的所有路线都已布置好,您可以轻松查看需要开发的路线。

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

在您的 HomeController 中:

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