Validation 验证后在控制器中获取表单输入

Validation 验证后在控制器中获取表单输入,validation,laravel,laravel-5,Validation,Laravel,Laravel 5,我是拉威尔世界的新成员,我有一个问题到目前为止我还不能解决 我的问题是: 验证失败后,如何在控制器的create()函数中访问提交的值 以下是我所拥有的: PostsController,在routes.php中定义为资源 在控制器中,我有常用的方法create()和store()等 下面是一些代码: //PostsController public function create() { //Here I need to get the inputs return view('

我是拉威尔世界的新成员,我有一个问题到目前为止我还不能解决

我的问题是: 验证失败后,如何在控制器的
create()
函数中访问提交的值

以下是我所拥有的:

  • PostsController,在routes.php中定义为资源
  • 在控制器中,我有常用的方法
    create()
    store()
  • 下面是一些代码:

    //PostsController
    public function create()
    {
        //Here I need to get the inputs
        return view('posts.create');
    }
    
    public function store(Requests\PostsRequest $request)
    {
        //store actions
    }
    
    我创建了PostsRequest类,它有一些规则,如:

    public function rules(){
        $rules = [
            'category_id'=>'required',
            'name'=>'required|min:3',
            'description'=>'required'
        ];
        return $rules;
    }
    
    如果一切正常,则条目已存储到数据库中,但当验证失败时,它将加载带有一些验证消息的
    create()
    。 我需要在表单中加载所选类别的祖先,这应该通过知道
    category\u id
    元素的提交值来实现

    到目前为止,我所尝试的:

  • 尝试在“创建”对话框中添加参数,如下所示:

    public function create(Requests\PostsRequest $request){...}  
    
    但它进入了无限循环。我理解为什么,因为控制器的资源定义和它“认为”它是存储方法

  • 试图打印facade
    Input::all()
    ,但它是空的

  • 试图使:

    public function create(){
        $request = new \Request();
        //print $request
    }  
    
    但是它不起作用,我也不认为这是正确的方法


  • 因此,如果您知道如何在控制器中获取这些值,我们将不胜感激。

    您应该能够使用Input::old()获取数据

    在你看来,你可以这样做

    <input type="text" name="name" value="{{ old('name') }}" />
    
    
    
    如果已发送,则将从name中获得值

    另请参见最近的问题/答案;

    如果使用
    {!!Form::open()!!}
    (或
    Form::model
    ),将再次加载所有内容(重定向回后)。Laravel自动捕获“Input::old”值

    来源:FormBuilder.php(lighting/html包-5.0版)

    如果您不想使用Illumb/html,只需在value属性处添加:

    Input::old('input_name')
    

    如果你想得到请求。只需添加到create方法中

    public function create(Request $request){
       $data = $request->all(); //or whatever you want..
    }
    

    我的问题不是在字段中显示值,而是在控制器中以某种方式获取值。我有很多嵌套的类别,我需要将它们显示为每个级别的多个选择。当用户从级别3中选择类别,并且验证失败时,我需要再加载两个级别以显示当前选择,顺便说一下,当前选择是用ajax加载的(例如,选择cat1,(加载新选择),然后选择cat1.2,(加载新选择),然后选择。请参阅我对其他答案的评论
    public function create(Request $request){
       $data = $request->all(); //or whatever you want..
    }