Search code examples
phplaravel-5.3

Method validate does not exist


I tried other fixes suggested by others but they didn't work. I really don't know why this is not working, been searching for two hours straight.

<?php

namespace App\Http\Controllers;

use App\User;

use App\Http\Controllers\Controller as Controller;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;

class RegisterUser extends Controller
{




    use ValidatesRequests;

    public function __construct()
    {
        $this->middleware('guest');
    }

    public function store(Request $request)
    {

        $request->validate([
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'passwordr' => 'required|string|min:6',
        ]);



        $name = 'NoName';
        $email = $request->input('email');
        $password = bcrypt($request->input('password'));

        $user = new \App\User();
        $user->name = $name;
        $user->password = $password;
        $user->email = $email;
        $user->save();

        return redirect()->action('HomeController@index');
    }
}

I don't know whats wrong


Solution

  • When you add a trait to some class then the methods of that trait are available in that class. So here what you need to do is:-

    $this->validate($request, [
      'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:6|confirmed',
                'passwordr' => 'required|string|min:6',
            ]);
    
    instead of 
    
    $request->validate([
                'email' => 'required|string|email|max:255|unique:users',
                'password' => 'required|string|min:6|confirmed',
                'passwordr' => 'required|string|min:6',
            ]);