Laravel 5.2寄存器页面上的多个表格



我正在使用Laravel 5.2。我的最终目标是在1页上有2个表格进行注册。当用户注册时,他们可以注册为提供商或普通用户。我在名为"提供者"的"用户"数据库中创建了一个新列。

我还使用laravelCollective HTML/表单生成表格。

我在视图中创建了两种形式:

<div class="row">
        <div class="col-md-6">
            <h2>Family Form</h2>
            {!! Form::open() !!}
            {{ Form::label('name', "Name:") }}
            {{ Form::text('name', null, ['class' => 'form-control']) }}
            {{ Form::hidden('provider', false) }}
            {{ Form::label('email', "Email:") }}
            {{ Form::text('email', null, ['class' => 'form-control']) }}
            {{ Form::label('password', "Password:") }}
            {{ Form::password('password', ['class' => 'form-control']) }}
            {{ Form::label('password_confirmation', "Confirm Password:") }}
            {{ Form::password('password_confirmation', ['class' => 'form-control']) }}
            {{ Form::submit('Register', ['class' => 'btn btn-primary btn-block form-spacing-top']) }}
            {!! Form::close() !!}
        </div>
        <div class="col-md-6">
            <h2>Provider Form</h2>
            {!! Form::open() !!}
            {{ Form::label('name', "Name:") }}
            {{ Form::text('name', null, ['class' => 'form-control']) }}
            {{ Form::hidden('provider', true) }}
            {{ Form::label('email', "Email:") }}
            {{ Form::text('email', null, ['class' => 'form-control']) }}
            {{ Form::label('password', "Password:") }}
            {{ Form::password('password', ['class' => 'form-control']) }}
            {{ Form::label('password_confirmation', "Confirm Password:") }}
            {{ Form::password('password_confirmation', ['class' => 'form-control']) }}
            {{ Form::submit('Register', ['class' => 'btn btn-primary btn-block form-spacing-top']) }}
            {!! Form::close() !!}
        </div>
    </div>

,然后在Auth Authcontroller中编辑了"创建"函数以添加"提供者"布尔值:

protected function create(array $data)
{
    return User::create([
        'name'     => $data['name'],
        'provider' => $data['provider'],
        'email'    => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

现在,我的问题是,无论我填写哪种形式,它总是将其保存为false或'0',在"提供商"下的数据库中

这是表格的HTML输出:

<div class="row">
        <div class="col-md-6">
            <h2>Family Form</h2>
            <form method="POST" action="//localhost:3000/auth/register" accept-charset="UTF-8"><input name="_token" type="hidden" value="Rli5AmRKkov64hPt6AEfr7yOLwA5EwUmozVePgQL">
            <label for="name">Name:</label>
            <input class="form-control" name="name" type="text" id="name">
            <input name="provider" type="hidden" value="">
            <label for="email">Email:</label>
            <input class="form-control" name="email" type="text" id="email">
            <label for="password">Password:</label>
            <input class="form-control" name="password" type="password" value="" id="password">
            <label for="password_confirmation">Confirm Password:</label>
            <input class="form-control" name="password_confirmation" type="password" value="" id="password_confirmation">
            <input class="btn btn-primary btn-block form-spacing-top" type="submit" value="Register">
            </form>
        </div>
        <div class="col-md-6">
            <h2>Provider Form</h2>
            <form method="POST" action="//localhost:3000/auth/register" accept-charset="UTF-8"><input name="_token" type="hidden" value="Rli5AmRKkov64hPt6AEfr7yOLwA5EwUmozVePgQL">
            <label for="name">Name:</label>
            <input class="form-control" name="name" type="text" id="name">
            <input name="provider" type="hidden" value="1">
            <label for="email">Email:</label>
            <input class="form-control" name="email" type="text" id="email">
            <label for="password">Password:</label>
            <input class="form-control" name="password" type="password" value="" id="password">
            <label for="password_confirmation">Confirm Password:</label>
            <input class="form-control" name="password_confirmation" type="password" value="" id="password_confirmation">
            <input class="btn btn-primary btn-block form-spacing-top" type="submit" value="Register">
            </form>
        </div>
    </div>

如果没有办法在同一注册页面上支持两种表格,是否有一种方法可以创建2个单独的寄存器页面,一个用于"家庭",另一个用于"提供者",而仍在使用默认的auth系统?我早些时候尝试过,只要有验证问题,它总是会重定向到/auth/register

感谢您的帮助:)

显然我忘了将'提供商'添加到用户模型中的$。

我已经解决了自己的问题,但是如果有更好的方法可以做到这一点,我很想学习!

app user.php:

protected $fillable = [ 'name', 'provider', 'email', 'password' ];

最新更新