2015-12-22 5 views
0

Я искал это, и я не могу найти ответ. Документы Laravel немного расплывчаты.Laravel 5.1 Регистрация аутентификации не получает данных

Я пытаюсь зарегистрировать пользователя и по большей части работает с использованием встроенных средств аутентификации Laravel. Все, что я пытаюсь сделать, это не просто иметь поле имени, когда пользователь регистрируется, я хочу иметь имя first_name и last_name.

Для этого я создал миграцию, которая расширяет таблицу пользователей, создаваемую миграцией defualt laravel. Вот код, который:


<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class AddFirstNameLastNameToUsersTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     // 
     Schema::table('users', function($table) { 
      $table->dropColumn('name'); 
      $table->string('first_name')->after('id'); 
      $table->string('last_name')->after('first_name'); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     // 
     Schema::table('users', function($table) { 
      $table->dropColumn('last_name'); 
      $table->dropColumn('first_name'); 
      $table->string('name'); 
     }); 
    } 
} 

Таким образом, после этого, я создал представление для регистрационной формы. Вот код, который:


@extends('../master') 

@section('content') 
    <div class="container"> 
     <div class="row"> 
      {!! Form::open(['url' => url('auth/register'), 'method' => 'post']) !!} 
      <div class="form-group"> 
       {!! Form::label('email', 'Email') !!} 
       {!! Form::email('email', null, ['class'=>'form-control', 'id'=>'username']) !!} 
      </div> 
      <div class="form-group"> 
       {!! Form::label('first_name', 'First Name') !!} 
       {!! Form::text('first_name', null, ['class'=>'form-control']) !!} 
      </div> 
      <div class="form-group"> 
       {!! Form::label('last_name', 'Last Name') !!} 
       {!! Form::text('last_name', null, ['class'=>'form-control']) !!} 
      </div> 
      <div class="form-group"> 
       {!! Form::label('password', 'Password') !!} 
       {!! Form::password('password', ['class'=>'form-control']) !!} 
      </div> 
      <div class="form-group"> 
       {!! Form::label('password_confirmation', 'Password Confirmation') !!} 
       {!! Form::password('password_confirmation', ['class'=>'form-control']) !!} 
      </div> 
      <div class="form-group"> 
       {!! Form::submit("Register") !!} 
      </div> 
      {!! Form::close() !!} 
     </div> 
    </div> 
@stop 

Это и говорится функция Validate в контроллере Идент будет проверять ввод, так вот код, который:


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|confirmed|min:6', 
    ]); 
} 

Теперь все это работает нормально, проблема заключается в создании функции в контроллере auth. Метод auth принимает массив данных. Документы laravel 5.1 не говорят, что будет в этом массиве. Я предположил, что это будут поля формы, которые были в регистрационной форме, но я не получаю поля first_name и last_name, которые находятся в форме регистрации. Он должен правильно проверять причину, чтобы записи сохранялись в БД, но столбцы first_name и last_name не сохраняются. Я сделал dd в массиве данных, но не умереть, поэтому я не знаю, что находится в массиве и как получить информацию в этом массиве.

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

редактировать:

Вот модели, first_name и last_name поля не были заливкой. Затем я сделал их заполняемыми по предложению @ Andrew, он все еще не заполняет поля.


<?php 

namespace SellIt; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Foundation\Auth\Access\Authorizable; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class User extends Model implements AuthenticatableContract, 
            AuthorizableContract, 
            CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'users'; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = ['first_name', 'last_name', 'email', 'password']; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = ['password', 'remember_token']; 
} 
+0

Как выглядит ваша модель? Я предполагаю, что это проблема. Убедитесь, что новые поля, которые вы создаете, заполняются. Также вы можете просто изменить миграцию create_users_table, не нужно создавать другую. – Andrew

+0

Я думал, что это будет сделано, но это не так :(Я собирался отредактировать начальную миграцию, но как только вы начнете редактировать миграции вместо создания новых, вы можете начать сталкиваться с проблемами. – Beamer180

+0

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

ответ

0

Так ... смешная история. Он показывал строку в workbench MySQL, поэтому я бы щелкнул правой кнопкой мыши по строке, ударил delete, и это покажет, что таблица пуста. Оказывается, MySQL Workbench фактически не удалял запись. Я вручную удалил запись с запросом и зарегистрировался снова, и он сработал. Спасибо за помощь ребята.

+1

В workbench вы должны нажать кнопку Apply после внесения изменений – peanut

Смежные вопросы