Маршрут Laravel /{имя пользователя} в действии формы

#php #forms #laravel #laravel-5 #laravel-5.3

#php #формы #laravel #laravel-5 #laravel-5.3

Вопрос:

В настоящее время я занимаюсь загрузкой изображений в Laravel-5.3. Маршруты моей «страницы профиля» определяются как:

 /* GET request to show the profile page */

Route::get('/{username}', [
    'uses' => 'AppHttpControllersProfileController@getProfile',
    'as'   => 'profile.index',

]);

/* POST request to update the Avatar (display pic) */

Route::post('/{username}', [
    'uses' => 'AppHttpControllersProfileController@updateAvatar',
    'as'   => 'profile.index',
]);
  

Таким образом, URL профиля в значительной степени выглядит как example.com/john (пусть «john» будет именем пользователя)

Однако в форме я должен определить «действие».

 <form enctype="multipart/form-data" action="" method="POST">
  

Как я могу определить маршрут в действии формы, чтобы пользователи перенаправлялись на свои собственные соответствующие маршруты; что-то вроде « example.com/john «.

Я предполагаю, что я не могу напрямую определить, <form action="/{username}"> к example.com/{username} чему я перейду вместо этого.

Комментарии:

1. у вас есть 2 маршрута с одинаковым именем маршрута.

Ответ №1:

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

 <form enctype="multipart/form-data" 
      method="POST"
      action="{{ route('profile.index', [
          'username' => Auth::user()->name
      ]) }}">
  

Ответ №2:

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

 <form enctype="multipart/form-data" action="{{ url(Auth::user()->name) }}" method="POST">
  

UPD: для именованного маршрута вы можете использовать route помощник

 <form enctype="multipart/form-data" action="{{ route('profile.index', ['username' => 'username_here']); }}" method="POST">