当我给我的插件的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
我做错什么了吗?
答案 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') }}