skip to Main Content

I am trying to work on a Laravel PHP project and as I am new to this framework. First step I had to do is build a Registration Form. However, when I click on the Submit button no error is given, and nothing is registered in my users table.

Here is the code for my project so far :

My users migration table up and down functions

 public function up()
      {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->boolean('sexe');
            $table->integer('age');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }

I added to the original two fields which are : "sexe a boolean F/M" and age

My RegisterController important functions

<?php

namespace AppHttpControllers;

use AppUser;
use AppHttpControllersController;
use IlluminateSupportFacadesHash;
use IlluminateSupportFacadesValidator;
use IlluminateFoundationAuthRegistersUsers;
use IlluminateHttpRequest;
use Mail;

class RegisterController extends Controller
{

    use RegistersUsers;


    protected $redirectTo = '/register';

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


    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required', 'string', 'max:255',
            'sexe'=> 'required|in:male,female',
            'age' => 'required|integer|max:100',
            'email' => 'required', 'string', 'email', 'max:255', 'unique:users',
            'password' => 'required', 'string', 'min:5', 'confirmed',
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'sexe' => $data['sexe'],
            'age' => $data['age'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

    }


  /**
     * Override default register method from RegistersUsers trait
     *
     * @param array $request
     * @return redirect to $redirectTo
     */
    public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        //add activation_key to the $request array
        $activation_key = $this->getToken();
        $request->request->add(['activation_key' => $activation_key]);

        $user = $this->create($request->all());

        //$this->guard()->login($user);

        //write a code for send email to a user with activation link
        $data = array('name' => $request['name'], 'email' => $request['email'],  'activation_link' => url('/activation/' . $activation_key));

        Mail::send('emails.mail', $data, function($message) use ($data) {
            $message->to($data['email'])
                    ->subject('Activate Your Account');
            $message->from('[email protected]');
        });

        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath())->with('success', 'We have sent an activation link on your email id. Please verify your account.');
                        print_r($request->input());
    }

}

My Routes

Route::auth();
Route::get('/home', 'HomeController@index');

Auth::routes();

Route::get('/register', 'RegisterController@create');
Route::post('/register', 'RegisterController@register');
Route::get('/', function () {
    return view('welcome');
});

My User.php Model fillable

protected $fillable = [
‘name’,’sexe’,’age’,’email’,’password’,
];

protected $hidden = [
    'password', 'remember_token',
];

public function setPasswordAttribute($password)
{
    $this->attributes['password'] = bcrypt($password);
}

}

My blade file register part (register.blade.php)

 <body>


                                    <form method="POST" role="form" action="//IJJI/resources/views/chat.blade.php">
                                    <meta name="csrf-token" content="{{ csrf_token() }}">

                                                <input id="name" name="name"type="text" class="form-control" placeholder="Entrez ici votre Pseudo *" value="" />

                                                    <label class="radio inline"> 
                                                        <input id="homme" type="radio" name="sexe" value="homme" checked>
                                                        <span> Homme </span> 
                                                    </label>
                                                    <label class="radio inline"> 
                                                        <input id="femme" type="radio" name="sexe" value="femme">
                                                        <span>Femme </span> 
                                                    </label>

                                                <input id="age" name="age" type="integer" class="form-control" placeholder="Saisissez votre age *" value="" />
                                                <input id="Email" name="email" type="email" class="form-control" placeholder="Saisissez votre Email *" value="" />

                                                <input id="password" name="password" type="password" class="form-control" placeholder="Entrez votre Mot de Passe *" value="" />

                                                <input id="confirmpassword" name="confirmpassword" type="password" class="form-control" placeholder="Confrimez votre Mot de Passe *" value="" />

                                            <button type="submit" class="btnRegister">
                                                Je deviens membre Gratuitement
                                            </button>

                                    </form>

            </body>

I have done PHP artisan make auth generated the files, made .env file adequate to my MySQL database with the username and password, even checked the PhpMyAdmin configuration, but all in vain.

After 4 days of search in Google websites I can’t figure out where I am wrong.

P.S : Another thing that could be wrong is that code like this :

@section
@endsection

never gets accepted and just shows like normal text on my browser.

Thanks a lot for your help

2

Answers


  1. Check your laravel logs location: storage/logs you will get errors.

    i have notice you are using $table->boolean(‘sexe’) and in validation you are giving string boolen should be 0/1

    'sexe'=> 'required:in:true,false',
    

    also change in your html form to 0,1 currently you are using male, female

    Login or Signup to reply.
  2. Are you getting error?
    Besides, can you please the following line at the top of your form to see if there is any validation error or not. After that try submitting the form and see if there is any error or not!

    @if(count($errors) > 0)
        <div style="color:red">
            @foreach ($errors->all() as $message)
                <ul>
                    <li>{{$message}}</li>
                </ul>
            @endforeach
        </div>
    @endif
    

    And remove the action form the form tags.
    Use:
    @csrf

    or

    {{csrf_field()}}

    instead of

    <meta name="csrf-token" content="{{ csrf_token() }}">

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search