В октябре маршрутизатор, как назвать конечную точку, и получить URL с именем - PullRequest
0 голосов
/ 29 декабря 2018

Когда я даю имя моей конечной точке, определенной в файле мой плагин route.php, и пытаюсь получить доступ к конечной точке через браузер, она выдает ошибку, показывающую как:

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

Я следовал Октябрьдокумент , и он выглядит примерно так, как показано ниже в 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 , как показано ниже;

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 голосов
/ 31 декабря 2018

В файле rout.php определите конечную точку, например:

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

Для получения URL: {{ route('myEndpoint') }}

0 голосов
/ 29 декабря 2018

Я нашел обходной путь, который не задокументирован, но работает нормально.В Routs.php определить конечную точку, как;

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

Теперь конечная точка доступна, и я могу получить URL-адрес с помощью метода Url::route и route помощник.

Однако явсе еще ожидаю, что те примеры в моей работе вопроса также.Я еще не выяснил, что с ними не так.

К вашему сведению, группа имен работает так, как описано в Октябрьском документе .

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

Затем получитеURL как;

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