1
resposta

Erro ao passar paramento para rules() em um customRequest

Olá estou recebendo o seguinte erro ao passar paramentos para o meu UsuarioEditarFormRequest: "Too few arguments to function App\Http\Requests\UsuarioEditarFormRequest::rules(), 0 passed and exactly 1 expected" Minha função rules();

public function rules($user)
    {
        return [
            'email' => ['required', Rule::unique('users')->ignore($user)],
            'name' => ['required', 'string','min:3', 'max:255'],
            'username' => ['required','min:3', 'max:255', Rule::unique('users')->ignore($user)]

        ];
    }

meu controller usando o request:

 public function update(UsuarioEditarFormRequest $request, $id)
    {
        $usuario = User::find($id);

        $request->rules($usuario);

        if ($request->filled('password')) {
            $data = array_merge($request->except('password_confirmation'), ['password' => Hash::make($request['password'])]);
        } else {
            $data = $request->except('password', 'password_confirmation');
        }

        $usuario->update($data);

        return redirect()->back();
    }

Como passo parâmetro ou recupero no resquestCustom? devo enviar o id num campo hidden do fomulário e recuperar com algo como $this['id]?

1 resposta

Rafael, o método rules é chamado automaticamente pelo Laravel e ele não passa nenhum parâmetro.

Se esse request pode ser usado tanto para usuário existentes e não existentes, não vai ser no FormRequest que você vai fazer essa verificação. :-)