2016-12-02 80 views
1

我正在使用Laravel 5.2。*进行项目工作,我正在使用默认的认证控制器和视图。我的最终目标是在1页上有2个表格用于注册。当用户注册时,他们可以注册为提供商或普通用户。我在'用户'数据库中创建了一个名为'provider'的新列。Laravel 5.2多种形式注册页面

我还使用LaravelCollective HTML/Forms来生成表单。

我创建的视图两种形式:

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

,然后在验证\ 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个独立的寄存器页,一个“家庭”和一个“提供者”,同时仍然使用默认的身份验证系统?我试过不过前面只要有一个验证问题将始终重定向到/认证/注册

感谢您的帮助:)

+0

什么是供应商领域的在你的数据库中的数据类型? –

+0

就我所见,两种形式的字段都是相同的(?)。为什么你希望他们成为两种形式,那么首先,为什么不简单地使用单选按钮让用户选择一种形式_他们想要注册哪种类型的账户? – CBroe

+0

@TheAlpha是布尔型 –

回答

0

显然,我忘了“供应商”添加到$ User模型可填写..

我已经解决了我自己的问题,但是如果有更好的方法去做这件事,我很乐意学习!

应用程序\ user.php的:

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