[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Dimas Querino
Criador Dimas Querino 20/04/2022

Ao fazer o seguinte codigo:

if ($this->method('PUT')){
$rules['password'] = [
'nullable',
'min:6',
'max:18',
];
}

Tanto no Store quanto do Update ele passa para 'nullable', para a validação dar certo tive que fazer da seguinte forma:

if ($this->method() == 'PUT'){
$rules['password'] = [
'nullable',
'min:6',
'max:18',
];
}

Do jeito proposto na aula realmente da esse erro ou sera que é algum problema aqui na minha maquina?

Criador Dimas Querino 20/04/2022

Só para completar, segue o meu método Store:

public function store(StoreUpdateUserFormRequest $request)
{
$data = $request->all();
if ($request->password){
$data['password'] = bcrypt($request->password);
}
$this->model->create($data);
return redirect(route('users.index'));
}

E minhas Rotas:

route::delete('/users/{id}', [UserController::class, 'destroy'])->name('users.destroy');

route::get('/users/{id}/edit', [UserController::class, 'edit'])->name('users.edit');
route::put('/users/{id}', [UserController::class, 'update'])->name('users.update');

route::get('/users/create', [UserController::class, 'create'])->name('users.create');
route::post('/users', [UserController::class, 'store'])->name('users.store');

route::get('/users', [UserController::class, 'index'])->name('users.index');
route::get('/users/{id}', [UserController::class, 'show'])->name('users.show');

Ja vi e revi o codigo e para mim parece estar tudo certo.

Dimas Querino
Manager Carlos Ferreira 20/04/2022

Olá, Dimas!

Tudo bem?

 

Essa implementação que você fez está correta, pode seguir com ela:

($this->method() == 'PUT')

Carlos Ferreira
Marcelo de Souza Junior 20/04/2022

Olá

 

No meu exemplo aconteceu o seguinte erro ao tentar colocar um e-mail duplicado:

 

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '[email protected]' for key 'users.users_email_unique' (SQL: update `users` set `email` = [email protected], `users`.`updated_at` = 2022-11-20 22:35:22 where `id` = 4)

 

 

Segue o método $rules

 

public function rules()
    {

        // Se for Null
        $id = $this->id ?? '';

        $rules = [
            'name' => [
                'required',
                'min:3',
                'max:255'
            ],
            'email' => [
                'required',
                'email',
                "unique:users, email,{$id},id",
            ],
            'password' => [
                'required',
                'min:6',
                'max:15',
            ]
        ];


        if ($this->method() == 'PUT'){
            $rules['password'] = [
                'nullable',
                'min:6',
                'max:18',
            ];
        }

        return $rules;
    }

 

e o método update

 

    public function update(Request $request, $id)
    {
        new Request;

        if (!$user = User::find($id)) {

            return redirect()->route('users.index');
        }
        $data = $request->only('name', 'email');
        if ($request->password) {
            $data['password'] = bcrypt($request->password);
        }
        $user->update($data);

        return redirect()->route('users.index');
    }
Marcelo de Souza Junior
Manager Carlos Ferreira 20/04/2022

Olá, Marcelo!
Tudo bem?

Cria uma nova thread (ticket) para discutirmos a sua dúvida.

No aguardo.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!