【问题标题】:Form does not redirect to action url if there is a validation error如果出现验证错误,表单不会重定向到操作 url
【发布时间】:2017-09-27 00:42:30
【问题描述】:

我在 laravel 中的 uri 操作有问题。

当我提交表单时,如果成功,它会重定向到完整的 url。但是如果有错误,则保留到当前的url地址。

示例:

当前网址为:http://localhost:8000/test?url=test_sample

我的表单如下所示:

<form action="{{ url('test?url=action') }}" method="POST" enctype="multipart/form-data"> 
  {{ csrf_field() }}
  <input type="file" name="pdf_file"> 
 <input type="submit" name="submit" value="Submit"/>
</form>

如果上面的表单包含错误,它将只保留到test?url=test_sample url。如果成功则重定向到test?url=action

编辑

控制器

class MyFormController extends Controller
{
   public function uploadfile(Request $request)
   {    
       $this->validate($request, [  
           'pdf_file' => 'required|mimes:pdf|max:5000'
       ]);

       return 'uploaded';
   }
}

web.php

Route::post('/test', 'MyFormController@uploadfile');

我需要此功能才能在我的网站上生效。

有人知道吗?

【问题讨论】:

  • 您的问题是什么?怎么做或者你有什么问题?你试过什么?您还需要向我们展示您的控制器,因为它在那里发生了逻辑(除非您使用 JS 来验证和提交?)
  • 无论成功与否,我都想重定向到 test?url=action 的 uri。
  • 那我没明白问题吗?无论如何,以上内容都应该发布到该网址?你的控制器会发生什么?
  • 现已编辑。请参见。谢谢

标签: php laravel laravel-5


【解决方案1】:

您使用的网址 (http://localhost:8000/test?url=test_sample) 包含一个 url 参数。要在控制器中使用该参数,需要从注入uploadfile()控制器方法的$request对象中获取值:

$request->get('url');

处理上传后,您可以使用它从uploadfile()控制器方法重定向用户:

public function uploadfile(Request $request)
{
    // ... 
    return redirect($request->get('url'));
}

因为您在控制器方法中使用validate() 方法,所以如果验证失败,请求将自动重定向回来。您可以将其替换为手动验证以自己处理结果:

    $validator = Validator::make($request->all(), [
        'pdf_file' =>  'required|mimes:pdf|max:5000',
    ]);

    if ($validator->fails()) {
        return redirect($request->get('url'))
            ->withErrors($validator)
            ->withInput();
    }

    return redirect($request->get('url'));

编辑 - 我想我误解了你的部分问题。看起来您不想在控制器方法中使用 url 参数。如果没有,只需更改验证语句。

【讨论】:

  • 哇..谢谢..酷。一个问题,自从你使用withErrors之后,如何在刀片上显示错误?
  • 默认情况下,Laravel 将 $errors 变量注入到包含任何验证错误的刀片模板中。你可以用它做很多事情。见the validation docs
猜你喜欢
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 2013-03-24
  • 2018-04-16
  • 2018-09-01
  • 1970-01-01
  • 2018-04-10
相关资源
最近更新 更多