【问题标题】:handle $errors and old input with 2 forms in a single page在单个页面中使用 2 个表单处理 $errors 和旧输入
【发布时间】:2016-08-18 13:53:18
【问题描述】:

我使用的是 laravel 5.2。

我正在尝试在一个页面中包含 2 个类似的表单,一个用于注册,一个用于登录。

问题是在一些验证错误之后,我无法识别提交了两者中的哪一个以放置一些错误显示并用旧输入填写正确的表单。

我的想法是尝试在表单中发送一个隐藏变量,以识别使用了两者中的哪一个,但是当我返回表单页面时,我无法检索旧的('hidden_​​field')。

我还尝试获取引用页面的路径以检查我是否可以从中识别它们,但它不起作用。

对于解决方案有什么不同的想法吗??

【问题讨论】:

  • 无法检索是什么意思?能否提供查看代码?
  • @MinaAbadir 似乎如果我提交一个隐藏的输入,它不会再次与其他输入一起传递给表单。如果我尝试使用 old() 函数读取它,它不起作用
  • 请提供代码
  • @Gabz 是否将旧输入返回到页面取决于您的验证方法。共享您的代码将有助于快速解决问题。 ref

标签: laravel laravel-5 laravel-5.2


【解决方案1】:

我。处理旧输入

- 在这 2 种形式中创建 1 个具有不同名称的属性。所以你可以正常使用 old()

II.处理 $errors。使用命名错误包

- 在你的控制器中

public function postRegister(Request $request){
    $validator = Validator::make($request->all(), $array_rules);
    if ($validator->fails()){
        return redirect('url')->withErrors($validator, 'form_register');
    }
}

public function postLogin(Request $request){
    $validator = Validator::make($request->all(), $array_rules);
    if ($validator->fails()){
        return redirect('url')->withErrors($validator, 'form_login');
    }
}

- 在你看来

//Access each form's errors normally
$errors->form_login->all()
$errors->form_register->all()

// Use old input normally
old('name_register');
old('name_login');

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    感谢 cmets 中的建议,我发现我必须向隐藏的输入字段添加验证规则才能再次将其传递给视图,并使用 old() 方法获取值。

    然后我可以用它来识别两种形式中的哪一种被使用了。

    【讨论】:

      猜你喜欢
      • 2014-07-20
      • 2015-01-30
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2014-12-02
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多