当用户汇总表格时,我需要在同一页面上为他输出消息。
当我提交表单时,页面刷新,处理程序触发(php函数),一些POST数据插入到数据库中,我设置了$this['success'] = 1
,然后与Twig一起检查:
{% if success %}
here is many tags with information and a message
{% else %}
here is a form
{% endif %}
但是如果我按F5键,则重新提交表单,则插入查询将再次执行。
使用AJAX进行此请求不是真正的选择。
答案 0 :(得分:1)
有很多方法可以回答这个问题(使用缓存,数据库,cookie,会话)。使用Session Flashing真的很容易,在这种情况下,我将向您展示如何使用Returning a redirect with flash data.
放置HTML表单代码:*请注意{{ something }}
对于提交表单后显示我们的响应很重要。该请求不使用AJAX。
{{ something }}
{{ form_open({ request: 'onSubmit', class: 'row', autocomplete: 'off' }) }}
{{ form_input('text', 'something', '', { class: 'input padding' }) }}
{{ form_submit('Submit', { class: 'button padding' } ) }}
{{ form_close() }}
PHP代码:
function onStart() {
$something = Session::get('something');
$this['something'] = $something;
}
function onSubmit() {
$something = Input::get('something');
return Redirect::refresh()->with('something', $something);
}
提交表单后测试并享受一种创建消息的方法。
答案 1 :(得分:0)
如果您使用的是 laravel,那么您可以轻松实现来处理此功能
在查看文件中,您需要编写此代码,它将在您显示表单的同一页面上显示消息。
file.blade.php 文件
@if(Session::has('success'))
<div class="alert alert-success">
{{ Session::get('success') }}
</div>
@endif
FormController.php
public function addUser(Request $request){
User::create([
'name' => $request->name,
'email' => $request->email,
'gender' => $request->gender,
'contact' => $request->contact,
.....]);
//below code help to display the message that you want on same page whereuser entered data
return back()->with('success', 'Thanks you for adding!!');
}
return back()->with('success', '感谢您的加入!!'); 将此代码用于 Laravel 项目以在同一页面上显示消息