【问题标题】:How do I auto fill field values in a section of a form that is loaded via ajax in Laravel 4?如何在 Laravel 4 中通过 ajax 加载的表单部分中自动填充字段值?
【发布时间】:2014-05-08 11:19:14
【问题描述】:

我有一个表单部分,它根据用户在控件中的选择动态加载不同的字段集。我正在使用 javascript 事件处理程序来检测选择何时更改,并使用 AJAX(带有 HTML 有效负载)来拉入正确的字段集。

我希望能够使用 Laravel 的 Form::getValueAttribute() 方法在静态和动态表单部分中自动填写表单字段的值。但是,我的 AJAX 调用加载的局部视图与我的主窗体的视图没有相同的 Form 类实例,因此我不能简单地在局部视图中调用 getValueAttribute()

我的想法是让 AJAX 调用 POST,并序列化必要的数据(Input::old() 的子集或模型数据,具体取决于页面是由于验证错误还是 UPDATE 请求而加载的)以发送连同 POST 一起,以便我返回的 HTML 片段具有正确设置的值。

这是获得我想要的东西的最佳方式吗?如果是这样,Laravel 是否有任何工具可以帮助对表单数据进行序列化?如果没有,有什么更好的方法?

【问题讨论】:

    标签: ajax forms dynamic laravel-4 autofill


    【解决方案1】:

    我找到了一种我更喜欢的方法。当视图正常加载时,我像往常一样使用 AJAX 来加载部分视图。但是当视图被加载以进行验证回发或编辑时,我使用 Laravel 的视图的嵌套方法将包含正确字段的部分视图直接嵌套到响应中。然后,部分可以访问我需要的所有输入和错误数据。用户仍然可以像往常一样更改字段集,但如果他们已经在之前选择的字段集中设置了一些值,我会为他们提供确认提示。如果他们决定继续,则清除字段集,并像往常一样通过 AJAX 引入新的字段集。

    我的代码如下所示:

    控制器:

    public function newThing() {
      if ( Request::session()->has('errors') ) {
          // this is a validation post-back
          return View::make('thing')
            ->nest('fields', 'fields_partial');
      } else {
          // just a normal unfilled form
          return View::make('thing');
      }
    }
    
    public function editThing() {
        return View::make('thing')
            ->nest('fields', 'fields_partial');
    }
    

    查看:thing.blade.php(只是其中的一小部分)

    ...
    <form>
        ...
        <select id="picker">...</select>
        <div class="sub-fields">
           {{ isset($fields) ? $fields : '' }}
        </div>
        ...
    </form>
    ...
    <script>
        $('#picker').change(function() {
            // if any .sub-fields inputs have been changed, get confirmation from the user
    
            // if user confirms, do ajax stuff to replace .sub-fields contents with new field set
            // otherwise cancel the change
        });
    </script>
    

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2019-01-29
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多