Error Methodnotallowedhttpexception in Routecollection.php line 218

Asked

Viewed 141 times

0

inserir a descrição da imagem aqui My route

    Route::put('equipes/insereAluno/{equipe}',['as'=>'equipes.insereAluno','uses'=>'EquipesController@insereAluno']);

My side.

{!! Form::model($equipe,['method'=>'PUT','route'=>['equipes.insereAluno',$equipe->id]]) !!}

    <div class="row">
        <div class="col-xs-5">
            {!! Form::label('disponivel', 'Alunos sem Equipes:') !!} <br/>
            {!! Form::select('disponivel',$disponiveis,null,['class'=> 'form-control chosen']) !!}
            {!! $errors->first('disponivel', '<span class="text-danger">:message</span> ') !!}
        </div>
        @if($modalidades)
        <div class="col-xs-5">
            {!! Form::label('modalidades', 'Selecione as provas que o aluno participará: ') !!} 
            <br/>
            {{ Form::select('modalidades[]',$modalidades, null,['class'=>'form-control chosen','multiple'])}}
            {!! $errors->first('modalidades', '<span class="text-danger">:message</span> ') !!}
        </div>
        @endif
        <div class="col-xs-2" style="margin-top:4px">
            <br/>
            {!! Form::submit('Adicionar',['class'=>'btn btn-primary','title'=>'Adicionar aluno à equipe']) !!}
        </div>
    </div>

My controller

public function insereAluno(EquipeInsereAlunoRequest $request,$id)
{
    $equipe = $this->equipe->find($id);

    $modalidades = $request->input('modalidades');

    if($equipe)
    {
        if(count($modalidades) > $equipe->modalidade->limite_de_provas)
        {
            Notification::error("O aluno só pode participar de {$equipe->modalidade->limite_de_provas} prova(s) por vez.");  
        }
        else
        {
            $alunoEquipe = new AlunoEquipe;
            $alunoEquipe->aluno_id = $request->input('disponivel');
            $alunoEquipe->equipe_id = $id;



            if($equipe->categoria == 'Infantil')
            {
                $num_max = $equipe->modalidade->num_max_infantil;
            }
            else //Juvenil
            {
                $num_max = $equipe->modalidade->num_max_juvenil;
            }

            if($equipe->total_alunos($id) >= $num_max)
            {
                Notification::error("Não é possível inserir mais alunos nesta modalidade.");
                return back()->withInput();
            }
            else{
                try {        
                    if ($alunoEquipe->save()) {
                        Notification::success('Aluno inserido na equipe.');

                        if($modalidades){
                            foreach($modalidades as $modalidade)
                            {
                                $alunoEquipeModalidade = new AlunoEquipeModalidade;
                                $alunoEquipeModalidade->aluno_equipe_id = $alunoEquipe->id;
                                $alunoEquipeModalidade->modalidade_id = $modalidade;

                                try {
                                    $alunoEquipeModalidade->save();
                                } catch (Exception $e) {
                                    Notification::error($e->getMessage());      
                                }
                            }
                        }

                        return redirect()->route('equipes.show',$id);
                    }

                    Notification::error('Não foi possível inserir aluno na equipe.');

                } catch (Exception $e) {
                    Notification::error($e->getMessage());            
                }
            }

        }
    }
    return back()->withInput();

}
  • Is your form being closed? I missed the function {{Form::close()}}

2 answers

1

The method PUT works only when your form method is POST and then you add the input field _method with the value PUT.

<form method="post">
    <input type="hidden" name="_method" value="PUT">
</form>

You can also use

{{ method_field('PUT') }}

0

Try switching from:

{!! Form::model($equipe,['method'=>'PUT','route'=>['equipes.insereAluno',$equipe->id]]) !!}

for

{!! Form::model($equipe,['method'=>'POST','route'=>['equipes.insereAluno',$equipe->id]]) !!}

@method('PUT')

// restande do form aqui

Browser other questions tagged

You are not signed in. Login or sign up in order to post.