Наименование маршрутов отличается от контроллера / базы данных - PullRequest
0 голосов
/ 16 апреля 2019

В приложении Laravel 5.8 я хочу, чтобы мои URL были на нидерландском языке, однако, для последовательности и просто общего использования, я хочу назвать все остальное их английскими именами.Eloquent (насколько мне известно) передаст мне правильные переменные, только если моя Модель, Контроллер, Таблица и т. Д. Названы одинаково.

Прямо сейчас у меня есть маршрут с именем / backend / facturen, который на английском языке будет / backend / invoices.Я попытался использовать имена маршрутов, однако обнаружил, что это не то, что я искал.

Мой маршрут:

Route::resource('/backend/facturen', 'InvoicesController');

Мой метод показа внутри InvoicesController:

public function show(Invoice $invoice) {
    return view('backend.invoice.show', compact('invoice'));
}

Таблица базы данных называется 'invoices'.

Единственный способ, с помощью которого я получил это, - переименовать мой маршрут в:

Route::resource('/backend/invoices', 'InvoicesController');

Но,конечно, это не решение моей проблемы.

Я хотел бы, чтобы все данные из накладных отображались на моем (голландском) / фактурном маршруте.

Ответы [ 3 ]

3 голосов
/ 16 апреля 2019

Контроллеры ресурсов по умолчанию ищут переменную с тем же именем, что и (последняя часть) URL-адреса, поэтому переименование URL-адреса также меняет эту переменную.

Но вы можете указать Laravel:используйте другое имя :

Route::resource('/backend/facturen', 'InvoicesController')->parameters([
    'facturen' => 'invoice'
]);
1 голос
/ 16 апреля 2019

Вы также можете получить саму переменную из идентификатора, не используя магию laravel для правильного определения переменной по URL:

public function show($id) {
    $invoice = Invoice::findOrFail($id);

    return view('backend.invoice.show', compact('invoice'));
}
0 голосов
/ 16 апреля 2019

Нет, вы зарегистрировали маршрут, указывающий на URL /backend/facturen, чтобы назвать его, используйте функцию name:

Route::resource('/backend/facturen', 'InvoicesController')->name('backend.invoice.show');

Даже тогда он выиграл 'Чтобы показать этот маршрут, при использовании функции view необходимо передать путь к шаблону, а не маршрут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...