2017-02-17 3 views
2

Ich versuche Laravel's Standardauthentifizierungssystem zu modifizieren, indem ich modale Fenster benutze und einige neue Felder hinzufüge. So habe ich ein modales Fenster einen neuen Benutzer zu registrieren, die wie folgt aussieht:Laravel Default Auth mit Mods

<!-- Modal Register area --> 
<div class="modal fade" id="registerModal" tabindex="-1" role="dialog" aria-labelledby="myRegisterLabel" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <form id="formRegister" class="login-form" action="{{ route('register') }}" method="POST"> 

     {{ csrf_field() }} 

     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
      <span aria-hidden="true">&times;</span> 
      </button> 
      <h4 class="modal-title" id="myRegisterLabel">Sign Up</h4> 
     </div> 
     <div class="modal-body"> 
      <div class="form-group"> 
      <label>First Name:</label> 
      <input type="text" name="first_name" placeholder="first name..." value="{{ old('first_name') }}" required autofocus> 
      </div> 
      <div class="form-group"> 
      <label>Last Name:</label> 
      <input type="text" name="last_name" placeholder="last name..." value="{{ old('last_name') }}" required autofocus> 
      </div> 
      <div class="form-group"> 
      <label>Email:</label> 
      <input type="email" name="email" placeholder="email..." value="{{ old('email') }}" required> 
      </div> 
      <div class="form-group"> 
      <label>Password:</label> 
      <input type="password" name="password" required> 
      </div> 
      <div class="form-group"> 
      <label>Password Confirmation:</label> 
      <input type="password" name="password_confirmation" required> 
      </div> 
      <div class="form-group"> 
      <button type="submit" class="btn btn-primary"> 
       Register 
      </button> 
      </div> 
     </div> 
     </form> 
     @if(count($errors)) 
     @foreach ($errors->all() as $error) 
      <div class="alert alert-danger"> 
      <p>{{ $error }}</p> 
      </div> 
     @endforeach 
     @endif 
    </div> 
    </div> 
</div> 
<!-- End Modal Register area --> 

Dann modifizierte ich die RegisterController Validierungsregeln und das Verfahren schafft diese neuen Felder sowie die Migrationsdatei aufzunehmen. (Also, ich habe die fileds in der Datenbank, alles ist gut dort)

RegisterController:

<?php 

namespace App\Http\Controllers\Auth; 

use App\User; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Foundation\Auth\RegistersUsers; 
use Illuminate\Http\Request; 

class RegisterController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Register Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users as well as their 
    | validation and creation. By default this controller uses a trait to 
    | provide this functionality without requiring any additional code. 
    | 
    */ 

    use RegistersUsers; 

    /** 
    * Where to redirect users after registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'first_name' => 'required|max:255', 
      'last_name' => 'required|max:255', 
      'email' => 'required|email|max:255|unique:users', 
      'password' => 'required|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 
     return User::create([ 
      'first_name' => $data['first_name'], 
      'last_name' => $data['last_name'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 
} 

In der Form, wie man sehen kann ich dies Weg bin Entsendung (‚Register‘), aber auch wenn Ich bekomme keine Fehler, wenn ich das Formular absende und ich werde zu dem/weitergeleitet, der Benutzer wird nicht in der Datenbank gespeichert. Die Sache ist, ich bin nicht wirklich sicher, wie dieses Standard-Authentifizierungssystem funktioniert ..

Danke für Ihre Hilfe!

+0

Haben Sie das Feld zu Ihrem $ ausfüllbare Eigenschaft auf dem Modell hinzufügen? –

+0

Ja, habe ich, ich habe vergessen, das zu erwähnen. –

+0

Also auf Ihrem make and create, wo sind die neuen Felder, die Sie hinzufügen? –

Antwort

0

Ich denke, bereitgestellten Code ist ziemlich richtig. Stellen Sie sicher, dass Sie name Feldformular users Tabelle in Ihrer Migration gelöscht haben.

Mit Ihrem Code konnte ich einen Benutzer mit Ihrem Modal und Controller registrieren. War frisches Laravel 5.4, wurde dein Modal in welcome.blade.php gelegt. Auch css/js Dateien hinzugefügt & eine Schaltfläche, um Modal anzuzeigen.

Hier ist meine up() Migration für Update users Tabelle

public function up() 
    { 
     Schema::table('users', function (Blueprint $table) { 
      $table->dropColumn('name'); 
      $table->string('first_name')->nullable(); 
      $table->string('last_name')->nullable(); 
     }); 
    } 

Auch aktualisiert User Modell mit neuen fillables:

protected $fillable = [ 
    'email', 'password', 'first_name', 'last_name' 
]; 
+0

Hmm .. Was ich getan habe, war nachdem ich rannte make: auth, um die Standardauthentifizierung zu machen Ich ging direkt in die Benutzer Migration und ich entfernte das 'Name' Feld und danach fügte ich meine first_name, last_name . Danach habe ich php artisan migrate ausgeführt. Sollte das das Problem sein? –

+0

Ja, Sie könnten die bestehende Migration ändern, wenn sie vorher nicht ausgeführt wurde. also sollte das kein Problem sein. –

+0

Ok, endlich konnte ich das rennen lassen und mir geht's so hässlich haha ​​.. Das Problem war mit meinem Modal, ich vergaß ich legte eine Bestätigung von min: 6 auf mein Passwort und ich war Geben Sie ein 4-stelliges Passwort ein. Da das Modal sich nach dem Senden schließt, habe ich das nicht bemerkt. Danke allen! –