2017-12-24 3 views
-2

Ich habe eine Frage: Wie kann ich Linkregister ändern? Beispiel: normal, wenn ich den Befehl auth ausführe -> ich habe route abc.com/register.Laravel - Benutzerdefinierte Link registrieren und überprüfen Validator

Aber ich möchte es zu abc.com/register/username mit Benutzernamen wird Mitglied eingeführt werden. Wenn register, wie kann ich überprüfen, ob dieser Benutzername existiert?

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 = '/home'; 

    /** 
    * 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, [ 
      'name' => 'required|string|max:255', 
      'username' => 'required|string|max:255|unique:users', 
      'email' => 'required|string|email|max:255|unique:users', 
      'password' => 'required|string|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return \App\User 
    */ 
    protected function create(array $data) 
    { 

     return User::create([ 
      'name' => $data['name'], 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
     ]); 
    } 
} 
+0

Sie machen Liste von vordefinierten Benutzernamen dann. scheint ungewöhnlich für mich. Ich würde lieber den Benutzer zuerst registrieren lassen und dann auf 'domain.test/profile/{username} umleiten.' – Chay22

Antwort

0

Statt Auth::routes() des Aufrufs, registrieren diese Routen manuell und ändern Sie sie, wie Sie benötigen:

// Authentication Routes... 
$this->get('login', 'Auth\[email protected]')->name('login'); 
$this->post('login', 'Auth\[email protected]'); 
$this->post('logout', 'Auth\[email protected]')->name('logout'); 

// Registration Routes... 
$this->get('register/{username}', 'Auth\[email protected]')->name('register'); 
$this->post('register/{username}', 'Auth\[email protected]'); 

// Password Reset Routes... 
$this->get('password/reset', 'Auth\[email protected]')->name('password.request'); 
$this->post('password/email', 'Auth\[email protected]')->name('password.email'); 
$this->get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset'); 
$this->post('password/reset', 'Auth\[email protected]'); 

Benutzernamen einzigartig sind, um sicherzustellen, fügen Sie exists:users zu Regel Ihre Validator ist für Namen (die Benutzer-Tabelle unter der Annahme, heißt users).

return Validator::make($data, [ 
    'name' => 'required|string|max:255|exists:users', 
    'username' => 'required|string|max:255|unique:users', 
    'email' => 'required|string|email|max:255|unique:users', 
    'password' => 'required|string|min:6|confirmed', 
]); 
+0

Funktioniert nicht, weil OP nach 'abc.com/register/username' Lösung fragt. Er möchte, dass der Benutzername Teil von URI ist. –

+0

Sie haben den Code gerade aktualisiert, aber er funktioniert immer noch nicht, weil Sie 'username' abfangen müssen und der Standard' showRegistrationForm 'das nicht tut. Es führt auch überhaupt keine Validierung durch. –

+0

@AlexeyMezenin Er wird offensichtlich 'showRegistrationForm' und/oder' Register' Funktionen übersteuern müssen. –

Verwandte Themen