Jac*_*ham 4 php jquery laravel eloquent laravel-5
我正在使用jQuery生成两个动态字段.每对字段都显示在页面上,可以有多个实例.在提交(不是ajax)时,每对字段都会保存到自己的表行中Auth::id().
HTML代码中有两种形式,输入两个值,用户单击"添加链接",然后jQuery创建两个隐藏字段(这些是提交的字段),输入的数据在视觉上显示(附加)#link-list.原始字段变空,该过程可以重复...
我正在努力创建一个由eloquent识别的数组,以多次保存数据.
我得到错误'未定义的索引:链接'或第二个输入行在jQuery中的任何一个.
刀片/ HTML:
{!! Form::open(['route' => ['multiple.store'], 'method' => 'post', 'role'=> 'form', 'class' => 'form']) !!}
<ul id="link-list">
<!-- append new rows -->
</ul>
<div id="newlink" class="form-inline">
<div class="form-group">
{!! Form::text('prestore', null, ['placeholder' => 'Store name', 'class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::text('prelink', null, ['placeholder' => 'Link / URL', 'class' => 'form-control']) !!}
</div>
<div class="form-group">
<button class="btn btn-primary submit new-row" type="button">Add store link</button>
</div>
</div>
<br/><br/>
{!! Form::submit('Submit rows', ['class' => 'btn btn-success submit']) !!}
{!! Form::close() !!}
Run Code Online (Sandbox Code Playgroud)
jQuery的/ JavaScript的
$(document).on('click', '.new-row', function() {
var store = $('#newlink input[name=prestore]').val();
var link = $('#newlink input[name=prelink]').val();
console.log(store, link);
$('<li class="not-saved">' +
'<a href="'+link+'">'+store+'</a>' +
'<input type="hidden" name="rows[][link]" value="' + link + '">' +
'<input type="hidden" name="rows[][store]" value="' + store + '">' +
'</li>').appendTo('#link-list').hide().fadeIn(280);
$('input[name=prestore]').val('');
$('input[name=prelink]').val('');
});
Run Code Online (Sandbox Code Playgroud)
控制器:
public function store()
{
$input = Input::all();
foreach ($input['rows'] as $row) {
$items = new Multiple([
'user_id' => Auth::id(),
'store' => $row['store'],
'link' => $row['link'],
]);
$items->save();
}
}
Run Code Online (Sandbox Code Playgroud)
一个问题是你的JavaScript元素名称:
<input type="hidden" name="rows[][link]" value="' + link + '">
<input type="hidden" name="rows[][store]" value="' + store + '">
Run Code Online (Sandbox Code Playgroud)
这会产生$rows如下:
[
0 => ["link" => "foo"],
1 => ["store" => "bar"]
]
Run Code Online (Sandbox Code Playgroud)
但是你的PHP代码$rows应该像:
[
0 => [
"link" => "foo",
"store" => "bar"
],
1 => [
"link" => "foo",
"store" => "bar"
]
]
Run Code Online (Sandbox Code Playgroud)
生成期望值的一种方法是在元素中指定行键:
<input type="hidden" name="rows[0][link]" value="' + link + '">
<input type="hidden" name="rows[0][store]" value="' + store + '">
<input type="hidden" name="rows[1][link]" value="' + link + '">
<input type="hidden" name="rows[1][store]" value="' + store + '">
Run Code Online (Sandbox Code Playgroud)
显然,根据您提供的代码,这有点棘手,所以如果您需要帮助,请告诉我.
| 归档时间: |
|
| 查看次数: |
8295 次 |
| 最近记录: |