在十月路由器中,如何命名端点,以及如何使用名称

时间:2018-12-29 07:23:34

标签: laravel routing octobercms octobercms-plugins

当我给我的插件的route.php中定义的端点命名并尝试通过浏览器访问该端点时,它会显示如下错误:

Function name must be a string
/path/to/my/src/vendor/laravel/framework/src/Illuminate/Routing/Route.php line 197

我关注了the October document,看起来像下面的plugins/me/myplugin/routes.php

Route::get(
    'api/v1/my/endpoint',
    ['as' => 'myEndpoint', 'Me\MyPlugin\Http\MyEndpoint@show']
);

另一方面,通过以下两种方式,按名称获取URL即可。

$url = Url::route('myEndpoint');

$url = route('myEndpoint');

然后,我尝试使用Laravel 5.5 document中所述的方法,如下所示;

Route::get(
    'api/v1/my/endpoint',
    'Me\MyPlugin\Http\MyEndpoint@show'
)->name('myEndpoint');

现在,可以通过浏览器访问端点,但是按名称获取URL会出错。

Route [myEndpoint] not defined.
/path/to/my/src/vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php line 305

我做错什么了吗?

2 个答案:

答案 0 :(得分:0)

我找到了一种解决方法,该方法没有记载,但可以正常工作。 在routes.php中,定义端点;例如

Route::name('myEndpoint')->get(
    'api/v1/my/endpoint',
    'Me\MyPlugin\Http\MyEndpoint@show'
);

现在,可以访问端点了,我可以通过Url::route方法和route助手来获取URL。

但是,我仍然希望我的问题中的这些示例同样适用。 我还没有发现它们有什么问题。

仅供参考,命名组的工作方式如October document中所述。

Route::group(['prefix' => 'api/v1', 'as' => 'api_v1::'], function () {
    Route::name('myEndpoint')->get(
        'api/v1/my/endpoint',
        'Me\MyPlugin\Http\MyEndpoint@show'
    );
});

然后,获取类似的网址

Url::route('api_v1::myEndpoint');

答案 1 :(得分:0)

在routes.php中定义端点,例如:

Route::get('/api/v1/my/endpoint','Me\MyPlugin\Http\MyEndpoint@show') ->name('myEndpoint')

要获取网址:{{ route('myEndpoint') }}