laravel中的登录表单

时间:2016-10-27 16:47:20

标签: forms laravel

我希望用户通过用户名或电子邮件登录我遇到问题我只让用户使用电子邮件登录我希望他插入用户名或电子邮件

<h2>Login</h2>
@if(count($errors))
<div class="alert alert-danger">
    <ul>
        @foreach($errors->all() as $error)
        <li>
            {{ $error }}
        </li>
        @endforeach
    </ul>
</div>
@endif
{!! Form::open(array('route' => 'handlelogin')) !!}

<div class="form-group">
    {!! Form::label('email/Username') !!}
    {!! Form::text('email',null,array('class' => 'form-control')) !!} 
</div>
<div class="form-group">
    {!! Form::label('password') !!}
    {!! Form::password('password',array('class' => 'form-control')) !!} 
</div>
{!! Form::token() !!}
{!! Form::submit('Login',array('class' => 'btn-default')) !!}
{!! Form::close() !!}

1 个答案:

答案 0 :(得分:0)

覆盖登录控制器中的凭据功能,并检查输入的值是否为电子邮件

protected function credentials(Request $request)
{
    $credentials = ['password' => $request->password];

    $data = $request->email;

    if(isEmail($data)) {
        $credentials['email'] = $data;
    } else {
        $credentials['username'] = $data;
    }

    return $credentials;
}

检查是否是电子邮件

function isEmail($data) { return filter_var($data, FILTER_VALIDATE_EMAIL); }

更新:只需将以下内容添加到您的控制器

public function handlelogin(Request $request) {

    $this->validate($request, User::$login_validation_rules);

    $data = ['password' => $request->get('password')];

    $email = $request->get('email');

    if($this->isEmail($email)) {
        $data['email'] = $email;
    } else {
        $data['username'] = $email;
    }

    if(\Auth::attempt($data)){
        return redirect()->intended('home');
    }

    return back()->withInput()->withErrors(['email'=>'Username or Password is wrong']);
}

// check if value is an email
protected function isEmail($value) {
    return filter_var($value, FILTER_VALIDATE_EMAIL);
}