在Laravel中,我有一个表,其中包含每行的编辑链接,如下所示;
<a data-toggle="modal" href="{{ route('myrow.edit', ['id' => $value['id']]) }}" data-target="#myModal">
<i class="fa fa-btn fa-pencil"></i>
</a>
模态屏幕定义如下;
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content"></div>
</div>
</div>
当点击前面提到的按钮时,包含的edit.blade.php看起来像这样;
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">My modal title</h4>
</div>
{!! Form::model($myrow, array('route' => array('mycontroller.update', $myrow->id), 'method' => 'PUT')) !!}
<div class="modal-body">
<!-- All kinds of fields -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button class="btn btn-success" type="submit">Save</button>
</div>
{!! Form::close() !!}
调用的mycontroller.update看起来像这样;
public function update(Request $request, $id) {
$mymodel = MyModel::find($id);
$mymodel->user = $request->user()->id;
$mymodel->field = $request->field;
if (!$mymodel->save()) {
$errors = $mymodel->getErrors();
return redirect()
->action('MyController@index')
->with('errors', $errors)
->withInput();
}
return redirect()
->action('MyController@index')
->with('message', $mymodel->field . ' was added');
}
当我在模态屏幕中填写数据并提交时,一切都很顺利。当我按下取消时按下&#34; x&#34;关闭模态或只是单击模态外部。在那些情况下,模态显然会关闭,但当我单击任何其他行中的编辑链接时,它将始终打开以前未保存行的模态屏幕,直到我刷新屏幕。
显然我需要在模态窗口以任何方式关闭后进行一些处理,但我应该怎么做。有人有一个很好的策略吗?
更新:它也不会执行第二次GET请求。我第一次点击编辑链接时,它会检索正确的数据 获取https://example.com/mylaravelapp/mymodel/1/edit 第二个(以及任何后续)时间根本没有请求。
答案 0 :(得分:0)
您需要使用JavaScript清除表单字段并根据您单击的行重新填充它们。该模式在关闭后仍然存在于Dom中,这就是为什么您看到之前输入的值
答案 1 :(得分:0)
Bootstrap Modal的引用存在问题。您正在创建一个独特的模态。切换模态的按钮使用data-target="#myModal"
属性来引用单击按钮时弹出的html。 html的那部分由id="myModal"
标识。
所以,如果你想创建多个模态,你需要这样的东西:
<a data-toggle="modal" href="{{ route('myrow.edit', ['id' => $value['id']]) }}" data-target="#myModal_{{$value['id']}}">
<i class="fa fa-btn fa-pencil"></i>
</a>
<div class="modal fade" id="myModal_{{$value['id']}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content"></div>
</div>
</div>
但是,你不应该创建多个模态;您必须只创建一个模态,并使用Javascript更新模态内容并形成操作属性。