【问题标题】:How can I pre-fill form data entered by a user in Laravel 7如何预先填写用户在 Laravel 7 中输入的表单数据
【发布时间】:2021-06-20 17:31:59
【问题描述】:

我正在制作一个注册表单,用户将被重定向到一个预览页面,以便在提交表单之前先确认他们的详细信息。我正在使用 Laravel 7,我对 Laravel 还是很陌生。一旦用户在注册表单中输入他们的详细信息,相同的详细信息将在提交前预先填写在预览表单中。我在控制器中尝试了一些代码,但它给了我一个错误Trying to get property 'myForm' of non-object 在我的控制器中,$data 是一个数组,我不确定如何实现这一点。请帮忙。

在我的控制器中:

public function confirmation(Request $request)

    {

        $categories = Category::all();

        $request->validate([
            'first_name'            => 'required|string|max:255',
            'last_name'             => 'required|string|max:255',
            'telephone_number'      => 'required|digits:10',
            'email'                 => 'required|string|email|max:255|unique:users','regex:/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,6}$/',
            'password'              => 'required|string|min:6|confirmed',
            'password_confirmation' => 'required',
            'region'                => 'required|string',
            'description'           => 'required|string|max:2500',
            'start_date'            => 'required|date',
            'client_region'         => 'string|max:500',
            'client_category'       => 'integer|max:255',
        ]);

        
        $data['myForm'] = $request->all();

        return view('auth.client.preview', compact('categories', 'data'));
}

在我的刀片视图中:

          <div class="form-group">
            <label for="first_name">First Name</label><span class="text-danger">*</span>
            <input type="text" class="form-control{{ $errors->has('first_name')?'is-invalid':'' }}"
            name="first_name" value="{{$data->myForm['first_name']}}"
            placeholder="Enter First Name" autofocus tabindex="1" required>
            <div class="invalid-feedback">
            {{ $errors->first('first_name') }}
            </div>
          </div>

我的路线:

Route::post('/preview-details', 'Auth\Client\PreviewRegisterDetailsController@confirmation')->name('preview-details');

下拉列表:

<label for="fundi_type">Fundi Type</label><span class="text-danger">*</span>
            <select class="custom-select" id="category_id" name="category_id">
            @foreach($categories as $category )
            <option value="{{ $category->id }}">{{ $category->name }}</option>
            @endforeach
            </select>

【问题讨论】:

  • 试试这个值="{{$data['myForm']['first_name']}}"

标签: laravel


【解决方案1】:

像下面这样简化。所以不需要创建额外的数组键。

$myForm = $request->all();

return view('auth.client.preview', compact('categories', 'myForm'));

在视野中

 <input type="text" class="form-control{{ $errors->has('first_name')?'is-invalid':'' }}"
            name="first_name" value="{{$myForm['first_name']}}"
            placeholder="Enter First Name" autofocus tabindex="1" required>

更新

 <option value="{{ $category->id }}" {{($myForm['category_id']==$category->id)?'selected':null}}>{{ $category->name }}</option>

【讨论】:

  • 和 @Rajen Trivedi - 这两个选项都运作良好。谢谢你俩。我还有一个挑战,我在表单中有一个下拉列表&lt;select&gt;,我希望它记住用户单击的选项,我该如何实现呢?
  • 我在我的问题中添加了下拉代码。
【解决方案2】:

编辑刀片文件代码。

实际上,您的控制器正在发送数组,并且您正在将该数组作为集合访问。

发件人:

 <input type="text" class="form-control{{ $errors->has('first_name')?'is-invalid':'' }}"
                name="first_name" value="{{$data->myForm['first_name']}}"
                placeholder="Enter First Name" autofocus tabindex="1" required>

收件人

<input type="text" class="form-control{{ $errors->has('first_name')?'is-invalid':'' }}"
            name="first_name" value="{{$data['myForm']['first_name']}}"
            placeholder="Enter First Name" autofocus tabindex="1" required>

希望这会有用。

【讨论】:

  • 感谢您的帮助,此选项也很有效。
猜你喜欢
  • 1970-01-01
  • 2021-06-30
  • 2014-12-11
  • 2019-09-10
  • 1970-01-01
  • 2014-08-12
  • 2017-03-03
  • 2022-01-02
  • 2013-03-08
相关资源
最近更新 更多