【发布时间】:2016-04-25 19:36:46
【问题描述】:
我必须添加/发布数据表单。但随着用户“点击”按钮,表单会动态增加。我已经浏览过它,我得到了一些答案,比如使用 $request->all() 从输入表单中获取所有数据。
然后我的问题是,我的应用程序使用 VueJS 作为前端。 VueJS 脚本上是否有任何配置可以发布该动态表单中的所有数据??
将动态增加的我的 Blade 模板:
<div id="form-message">
{!! Form::text('rows[0][DestinationNumber]', null, [
'id' => 'recipient',
'class' => 'form-control',
'v-model' => 'newMessage.DestinationNumber'
])
!!}
{!! Form::textarea('rows[0][TextDecoded]', null, [
'rows' => '3',
'id' => 'recipient',
'class' => 'form-control',
'v-model' => 'newMessage.TextDecoded'
])
!!}
</div>
这个零数字会增加多少取决于用户点击添加按钮的次数。 然后是我的 VueJS 脚本
var newSingleMessage = new Vue({
el: '#newsinglemsg',
data: {
newMessage: {
DestinationNumber: '',
TextDecoded: ''
},
},
methods: {
onSubmitForm: function(e) {
e.preventDefault();
var message = this.newMessage;
this.$http.post('api/outbox', message);
message = { DestinationNumber: '', TextDecoded: '' };
this.submitted = true;
}
}
});
在 laravel 控制器上,我有简单的逻辑来测试数据如何传递的结果。
$input = $request->all();
$output = dd($input);
return $output;
而且,我使用 2 个附加表格对其进行了测试。因此,数据应该是 3 行。结果(从 FireBug 检查)是这样的
{"DestinationNumber":"1234567890","TextDecoded":"qwertyuio"}
数据只传递一个,然后类型是 JSON。即使我使用 return $output->toArray(),仍然输入 JSON。
哦,是的,再来一次。 Idk 如何使用 javascript 使零数动态增加。测试时,我只是手动添加表单。这里我添加点击函数javascript
var i = 0,
clone = $('#form-message').clone(),
recipient = document.getElementById('recipient');
recipient.setAttribute('name', 'rows['+ i +'][DestinationNumber]');
clone.appendTo('.form-message:last');
i++;
对于第二行和下一行,未在输入元素上添加名称属性。 谢谢
【问题讨论】:
标签: javascript forms laravel-5.1 vue.js