【问题标题】:Laravel - If has errors on validation, insert class in the specifics inputsLaravel - 如果验证有错误,请在具体输入中插入类
【发布时间】:2016-03-08 12:08:57
【问题描述】:

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

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

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

登录路径:

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');
});

管理员控制器:

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>

【问题讨论】:

    标签: laravel authentication laravel-5.1


    【解决方案1】:

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

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

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

    为简洁起见,我省略了输入字段的其余部分。它基本上检查电子邮件输入是否存在错误。如果是这样,则输出“some-class”。否则,它会跳过它。

    编辑:要回答有关如何自定义在何处输出错误消息的问题,您可以将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
    

    【讨论】:

    • 是的,但它只打印带有$errors-&gt;all() 的所有错误,我想在具体输入下方打印特定错误...明白了吗?
    • 你应该在你的问题中指定。哈哈。没有提到这一点。关于您的第二个问题,我将编辑我的答案。
    • 谢谢,对不起,我的错误... =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2022-01-23
    • 2020-04-16
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多