#php #laravel #localization
#php #laravel #локализация
Вопрос:
Я передаю два параметра в letters.показать маршрут. один — это locale, другой — id.
Отсутствуют обязательные параметры для [Route: letters.show] [URI: {language}/letters/{letter}]. (Просмотр: C:xampphtdocsdsttsresourcesviewsinclayout.blade.php )
Эта ошибка отображается, хотя есть все необходимые параметры.
Мой web.php файл
Route::group(['prefix' => '{language}'], function () {
Route::get('/', function () {
return view('welcome');
})->name('welcome');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::resource('letters', 'LettersController')->middleware('auth');
});
Метод отображения контроллера букв
public function show($lang, $id)
{
$letter = Letter::find($id);
return view('letters.show')->with('letter', $letter);
}
Страница My letters.index, на которой я разместил кнопку отображения букв
<a class="btn bg-green btn-block btn-xs waves-effect" href="{{ route('letters.show', [app()->getLocale(), $letter->id]) }}"></a>
Когда я нажимаю кнопку «Показать» в адресной строке браузера, отображается правильный адрес: http://dstts.site/en/tasks/1
Чего мне здесь не хватает?
Комментарии:
1. почему у вас есть
tasks
url? это должно бытьletters
2. Вы неправильно указали URL-адрес, это будет dstts.site/ru/letters/1
3. Я упомянул неправильный URL-адрес в вопросе. В любом случае dstts.site/en/letters/1 по-прежнему не работает. 🙁
Ответ №1:
Все в порядке, в вашем коде все в порядке, попробуйте проверить $letter->id
, что это не null
так, или вы можете протестировать поочередно $letter->id
с любой существующей моделью, если она работает, ошибка будет в $letter->id
Комментарии:
1. $letter->id не равен нулю. Даже если значение равно null, проблем быть не должно. Потому что я уже просматривал нулевую запись раньше. Все эти маршруты работали нормально, пока я не объединил свою ветку с другой. Не знаю, что произошло. Но эта проблема возникает только на маршрутах, для которых требуется второй параметр. letters.index работает нормально.