Я искал это, и я не могу найти ответ. Документы 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'];
}
Как выглядит ваша модель? Я предполагаю, что это проблема. Убедитесь, что новые поля, которые вы создаете, заполняются. Также вы можете просто изменить миграцию create_users_table, не нужно создавать другую. – Andrew
Я думал, что это будет сделано, но это не так :(Я собирался отредактировать начальную миграцию, но как только вы начнете редактировать миграции вместо создания новых, вы можете начать сталкиваться с проблемами. – Beamer180
Я не понимаю, почему у вас возникнут проблемы. Если вы просто измените миграцию, в этом нет ничего плохого, на самом деле я считаю это лучшей идеей, чем создание другой миграции для уже существующей таблицы. – Andrew