2017-02-17 14 views
2

Я пытаюсь изменить систему аутентификации laravel по умолчанию, используя модальные окна и добавив несколько новых полей. Итак, у меня есть модальное окно для регистрации новых пользователей, который выглядит следующим образом:Laravel Default Auth с модификациями

<!-- 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 --> 

Затем я изменил правило проверки RegisterController и создать метод, чтобы включить эти новые поля, а также файл миграции. (Так что, у меня есть fileds в базе данных, все хорошо там)

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']), 
     ]); 
    } 
} 

В том виде, как вы можете видеть, что я отправляю это маршрут («регистрация»), но несмотря на то, Я не получаю никаких ошибок при отправке формы, и я перенаправляюсь к/пользователь не получает сохранение в БД. Дело в том, что я не совсем уверен, как работает эта система auth по умолчанию.

Спасибо за помощь!

+0

ли вы добавить поле в ваши $ нефтеналивной собственности на модели? –

+0

Да, я это сделал, я забыл упомянуть об этом. –

+0

Итак, что вы делаете и создаете, где новые поля, которые вы добавляете? –

ответ

0

Я думаю, что при условии, что код довольно правильный. Убедитесь, что вы удалили name полевая форма users таблица в вашей миграции.

Используя ваш код, я смог зарегистрировать пользователя с вашим модулем и контроллером. Был свежий Laravel 5.4, ваш модальный был помещен в welcome.blade.php. Также добавлены файлы css/js & кнопка для показа модального.

Вот моя up() миграция для обновления users таблицы

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

Также обновлен User модели с новым fillables:

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

Хмм .. Что я сделал после того, как я запустил make: auth, чтобы выполнить аутентификацию по умолчанию, я пошел прямо в миграцию пользователей, и я удалил поле «имя», после чего я добавил свое имя_имя, last_name , После этого я запустил миграцию php-artisan. Если это проблема? –

+0

да, вы могли бы изменить существующую миграцию, если раньше не выполнялось. так что это не должно быть проблемой –

+0

Хорошо, я, наконец, смог добиться этого, и я чувствую себя таким глупым сейчас, ха-ха .. Проблема была в моем модальном, я забыл, что я положил валидацию min: 6 на мой пароль, и я был ввод пароля на 4 символа. Потому что модальный закрывается после отправки, я этого не заметил. Всем спасибо! –