Я изучаю маршрутизацию Laravel9 с примером кода, и у меня проблемы с изменением URL. Я хотел бы изменить URL, как показано ниже
В настоящее время я могу получить доступ к этому URL
127.0.0.01:8000/студент/
и
127.0.0.01:8000/студент/создать
но я хотел бы изменить вот так
127.0.0.01:8000/fun_student/
и
127.0.0.01:8000/fun_student/создать
Я написал так
веб.php
Route::prefix('fun_fun_student')->group(function (){
Route::resource('students', StudentController::class);
});
но я не могу отображать как этот URL. Может ли кто-нибудь научить меня правильному коду, пожалуйста?
ОБНОВЛЯТЬ
Я пытался
Route::resource('fun', StudentController::class);
то мой текущий список маршрутов
GET|HEAD fun ............................. fun.index › StudentController@index
POST fun ............................. fun.store › StudentController@store
GET|HEAD fun/create .................... fun.create › StudentController@create
GET|HEAD fun/{fun} ......................... fun.show › StudentController@show
PUT|PATCH fun/{fun} ..................... fun.update › StudentController@update
DELETE fun/{fun} ................... fun.destroy › StudentController@destroy
GET|HEAD fun/{fun}/edit .................... fun.edit › StudentController@edit
Уважаемый @brombeer Спасибо, что ответили мне. Я использую Laravel 9. Я пробовал Route::resource('fun_student', StudentController::class); но у меня Route [students.create] не определен. ошибка. поэтому я искал способ легко изменить маршрут, поэтому нашел префиксную команду.
В руководстве Laravel есть раздел Контроллеры ресурсов, а также имена маршрутов для каждого действия. И в вашем списке маршрутов также отображаются имена маршрутов/действий. Используйте правильный
Мне жаль, что я все еще не понимаю. Вы имеете в виду, что я должен делать URL каждой страницы один за другим?
Нет, это не то, что я написал. Для Route::resource('fun', StudentController::class);
имя будет fun.create
(где бы вы ни использовали этот маршрут, вы его не показываете)
Спасибо, что ответили мне. Мне нужно время, чтобы понять, что вы советуете. Так что не могли бы вы дать мне время. Я сделаю свое.
Уважаемый @brombeer Большое спасибо за помощь. и извините, что я не мог понять вашу помощь из-за моего медленного мозга. Я попробовал ответ мистера Дасуна Таранги и решил. Еще раз спасибо.
Чтобы изменить префикс вашего ресурса. вам нужно изменить имя ресурса.
Бывший:
Route::resource('fun_student', StudentController::class);
Затем вы можете использовать такие маршруты:
Бывший:
<a href = "{{ route('fun_student.index') }}">Students</a>
Этот маршрут должен выводить следующий URL:
http://127.0.0.01:8000/fun_student
После изменения ресурса не забудьте очистить кеш, выполнив:
php artisan route:clear
// or
php artisan optimize:clear
Также измените route('students.xxx')
на route('fun_student.xxx')
в других местах вашего проекта.
Я бы посоветовал вам просмотреть документацию Laravel для получения дополнительной информации.
Уважаемый @Dasun Tharanga Спасибо за помощь. ваш ответ работает очень хорошо. но я застрял на странице редактирования. выкладываю другое. Не могли бы вы взглянуть на это, пожалуйста? stackoverflow.com/questions/75991162/…
Чтобы дополнить ответ Dasun Tharanga, если вы используете привязку модели маршрута, например:
/**
* Display the specified resource.
*/
public function show(Student $student)
{
//...
}
Вы должны изменить имя аргумента на:
public function show(Student $fun_student)
{
//...
}
Или вы должны назвать параметры маршрута ресурса
Route::resource('fun_student', StudentController::class)->parameters([
'fun_student' => 'student'
]);
Уважаемый @Khang Tran Спасибо за ответ. Выглядит это действительно потрясающе. но извините, этот пример модели сценария CRUD не использует привязку. но я очень люблю этот код. Спасибо.
Ларавель 8 или Ларавель 9? Зачем добавлять к маршрутам префикс
fun_fun_student
, если он не должен появляться нигде в URL-адресе? ПробовалиRoute::resource('fun_student', StudentController::class);
? (Проверьте свои маршруты с помощьюphp artisan route:list
)