Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: PUT. с положенными формами. Laravel - PullRequest
0 голосов
/ 29 февраля 2020

У меня действительно есть проблема с одной из моих форм, которая позволяет пользователю изменить изображение своего профиля.

Когда я отправляю файл, этот URI загружает localhost / projetT / public / profil / icone / 2 но ничего не случилось. Если я перезагружаю URI, потому что загрузка очень и очень долгая, я получаю эту ошибку: метод GET не поддерживается для этого маршрута. Поддерживаемые методы: PUT. Мне нужна помощь.

<div class="container bg-primary rounded mt-4 mb-4" style="min-height: 1300px;"">
  <div class="row p-2">
    <div class="col-12">
      <div class="row h-50">
        <div class="col-12 justify-content-center">
          <img class="img-fluid d-block bg-dark rounded-circle h-100 mx-auto shadow-lg" src="../public/uploads/{{ Auth::user()->image }}">
        </div>
      </div>
      <div class="row" >
        <div class="container-fluid">
          <div class="card-body">
            <form action="{{ route('profil.icone',['user' => Auth::user()]) }}" method="POST"  enctype="multipart/form-data" >
            @csrf
            @method('PUT')
              <div class="row mx-md-n5">
                <div class="col">
                  <input id="avatar" type="file" class="form-control bg-white text-dark border-dark" name="avatar">
                </div>
              </div>
              <div class="row p-3">
                <div class="col text-center">
                  <button type="submit" class="btn btn-default btn-dark text-white" id="enregistre" name="enregistre">Changer de photo</button>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
      <hr class="bg-dark"></hr>

      <div class="row">
        <div class="card-body">
          <form action="{{ route('profil.edit',['user' => Auth::user()]) }}" method="POST" enctype="multipart/form-data">
            @csrf
            @method('PUT')
            <h3 class="text-light mb-4 rounded bg-dark text-center">Informations du compte</h3>
            <div class="pl-lg-6">
              <div class="row">
                <div class="col-lg-6">
                  <div class="form-group focused">
                    <label class="text-dark" for="input-nom" class="text-primary">Nom</label>
                    <input type="text" id="input-nom" class="form-control validate border-dark font-weight-bold text-dark" name="nom" value="{{ Auth::user()->name }}" disabled="disabled" >
                  </div>
                </div>
                <div class="col-lg-6">
                  <div class="form-group focused">
                    <label class="text-dark" for="input-prenom">Prenom</label>
                    <input type="text" id="input-prenom" class="form-control validate border-dark font-weight-bold text-dark" name="prenom" value="{{ Auth::user()->prenom }}" disabled="disabled" >
                  </div>
                </div>
                <div class="col-lg-6">
                  <div class="form-group focused">
                    <label class="text-dark" for="input-pseudo">Pseudo</label>
                    <input type="tel" id="input-pseudo" class="form-control validate border-dark font-weight-bold text-dark" name="pseudo" value="{{ Auth::user()->pseudo }}" disabled="disabled">
                  </div>
                </div>
                <div class="col-lg-6">
                  <div class="form-group">
                    <label class="text-dark" for="input-email">Adresse Email</label>
                    <input type="email" id="input-email" class="form-control validate border-dark font-weight-bold text-dark" name="mail" value="{{ Auth::user()->email }}" disabled="disabled">
                  </div>
                </div>
                <div class="col-lg-6">
                  <div class="form-group" id="zoneOldMDP">
                    <!-- zone qui va recevoir les champs pour l'ancien mdp -->
                  </div>
                </div>
                <div class="col-lg-6">
                  <div class="form-group" id="zoneNewMDP">
                    <!-- zone qui va recevoir les champs pour le nouveau mdp -->  
                  </div>
                </div>
                <div class="col text-center" id="zoneEnregistrer">
                  <input class="btn btn-default btn-dark text-white" type="button" id="modifier" name="modifier" value="Modifier">
                </div>
              </div>  
            </div> 
          </form>
        </div>
      </div>  
    </div>
  </div>
</div> 

Итак, моя проблема связана с первой формой с {{route ('profil.icone', ['user' => Auth :: user ()])}}.

Вторая форма с {{route ('profil.edit', ['user' => Auth :: user ()])}} на самом деле работает хорошо и обновляет мои данные в базе данных. Кнопка отправки второй формы добавляется в JQuery после нажатия кнопки «Модификатор».

Но я не понимаю, почему первая форма не работает, потому что две формы очень похожи , меняется только название действия.

class ProfilController extends Controller
{
    public function index()
    {
        return view('profil');
    }

     public function store(ImagesRequest $request, User $user)
    {
        $request->validate([
            'avatar' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048'
        ]);

        if($request->hasFile('avatar')){
            $image = $request->file('avatar');

            $filename = time() . '.' . $image->getClientOriginalExtension();
            Image::make($image)->resize(300, 300)->save('/uploads/' . $filename );

            $user->image = $filename;
            $user->save();
        }
        return view('profil')->with ('alert', 'Votre photo a été mise à jour');
    }

    public function storeCompte(Request $request, User $user)
    {
        $nom = $request->nom;
        $prenom = $request->prenom;
        $pseudo = $request->pseudo;
        $mail = $request->mail;

        $user->name = $nom;
        $user->prenom = $prenom;
        $user->pseudo = $pseudo;
        $user->email = $mail;   

        $user->save();

        return back ()->with ('alert', 'Vos informations ont été mise à jour');
    }
}

Есть мои маршруты про профиль; в сети. php файл.

Route::get('/profil', 'ProfilController@index')->name('profil')->middleware('auth');
//route pour mettre a jour sa photo de profil
Route::put('/profil/icone/{user}', 'ProfilController@store')->name('profil.icone');
//route pour editer son profil
Route::put('/profil/edit{user}', 'ProfilController@storeCompte')->name('profil.edit');

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 29 февраля 2020

Итак, я перезапустил MAMP и сервер apache, и маршрут работает, теперь у меня есть «не могу записать данные в путь», но я могу разрешить его, я думаю. Спасибо за помощь.

0 голосов
/ 29 февраля 2020

У вас есть опечатки , которые нужно исправить, чтобы заставить его работать

Измените эту строку

Route::put('/profil/edit{user}', 'ProfilController@storeCompte')->name('profil.edit');

на

Route::put('/profil/edit/{user}', 'ProfilController@storeCompte')->name('profil.edit');

Тогда в ваших клинках формируется

Изменить

action="{{ route('profil.icone',['user' => Auth::user()]) }}"
action="{{ route('profil.edit',['user' => Auth::user()]) }}"

На

action="{{ route('profil.icone',['user' => Auth::id()]) }}"
action="{{ route('profil.edit',['user' => Auth::id()]) }}"
...