Pedro
Pedro

Reputation: 1477

Undefined method ::validate in laravel

working in recover the password, and everything was working ok since i added a validator, but i get a error: "Undefined method ...\Password\PasswordController::validate"

The function im calling is postEmail

What am i doing wrong?

My code:

<?php

namespace Illuminate\Foundation\Auth;

use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Password;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

trait ResetsPasswords
{

    use RedirectsUsers;

    /**
     * Send a reset link to the given user.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function postEmail(Request $request)
    {
        $this->validate($request, ['email' => 'required|email']);


        $response = Password::sendResetLink($request->only('email'), function (Message $message) {
            $message->subject($this->getEmailSubject());
        });


        switch ($response) {
            case Password::RESET_LINK_SENT:
                return redirect()
                       ->back()
                       ->with('status', trans($response));

            case Password::INVALID_USER:
                return redirect()
                       ->back()
                       ->withErrors(['email' => trans($response)]);
        }
    }
}

Upvotes: 1

Views: 10402

Answers (1)

Shyam Achuthan
Shyam Achuthan

Reputation: 950

A controller doesn't have a validate method unless you use the appropriate traits. You cannot use validate() function on $this. It will be working only if you have the ValidatesRequests trait is used on the controller

so just after

class PasswordController{

you have to insert the below

use ValidateRequests;

Upvotes: 3

Related Questions