Laravel - 如果验证有错误,请在特定输入中插入类

时间:2015-12-03 18:23:06

标签: laravel authentication laravel-5.1

我在PHP中完全是noob,但我的问题是,在验证后,特定输入有错误,如何在特定输入中插入一个类?

示例,如果我在验证中出现此错误:“电子邮件字段是必需的。”

如何在电子邮件输入中插入特定类?

登录路线:

Route::group(['prefix' => 'admin'], function () {
    Route::get('/', 'Admin\AdminController@index');

    Route::get('login', 'Admin\AuthController@getLogin');
    Route::post('login', 'Admin\AuthController@postLogin');
    Route::get('logout', 'Admin\AuthController@getLogout');
});

AdminController:

class AdminController extends AdminBaseController
{

    public function index()
    {
        if(Auth::user()){
            return view('admin/pages/admin/index');
        }

        return view('admin/pages/login/index');
    }

}

AuthController:

class AuthController extends Controller
{

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    private $redirectTo = '/admin';

    public $loginPath = '/admin';

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    public function getLogin()
    {
        if(Auth::user()){
            return redirect('/admin');
        }

        return view('admin/pages/login/index');
    }

    public function postLogin(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|email',
            'password' => 'required|min:6',
        ]);
    }
}

我的刀片形式:

<form class="s-form" role="form" method="POST" action="/admin/login">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="s-form-item text">
        <input type="text" name="email" value="{{ old('email') }}" placeholder="Email">
    </div>
    <div class="s-form-item text">
        <input type="password" name="password" value="{{ old('password') }}" placeholder="Senha">
    </div>
    <div class="s-form-item">
        @if ($errors->has())
            <div class="alert alert-danger">
                @foreach ($errors->all() as $error)
                    {{ $error }}<br>
                @endforeach
            </div>
        @endif
    </div>
    <div class="s-form-item s-btn-group s-btns-right">
        <input class="s-btn" type="submit" value="Entrar">
    </div>
</form>

1 个答案:

答案 0 :(得分:2)

您可以将参数传递给has方法以指定特定密钥。

例如,对于您的电子邮件输入...

<input class="@if($errors->has('email')) some-class @endif" ... >

为了简洁,我遗漏了输入字段的其余部分。它基本上检查是否存在电子邮件输入错误。如果是这样的话,那就是某种类型的&#39;输出。否则,它会跳过它。

编辑:要回答有关如何自定义错误消息输出位置的问题,可以将getfirst方法与has方法结合使用。例如......

@if ($errors->has('email'))
    @foreach ($errors->get('email') as $error)
    <p>{{ $error }}</p>
    @endforeach
@endif

has方法已经解释过了。 get方法检索验证错误。因为可能存在多个验证错误,所以必须循环并输出它。

在下一个示例中,我使用first。此方法只输出第一条错误消息,因此无需循环遍历它。

@if ($errors->has('email'))
<p>{{ $errors->first('email') }}</p>
@endif