我的网站使用OctoberCMS,我有一个联系表单,我想在其中显示部分成功消息,并在提交后隐藏表单。这是表单的代码片段,我清除了不必要的部分:
<form role="form" class="cntct" id="cntct" data-request="onSend" data-request-update="success: '#result'">
<div class="form-group">
<!-- Some input fields here !-->
<div class="row">
<div class="col-sm-6">
<button type="submit" class="btn btn-lg btn-info">Send message</button>
</div>
</div>
</div>
</form>
<div id="result">
{% partial 'success' %}
</div>
表格正常,我可以发送电子邮件,success
部分显示其内容,没有任何错误。我只想删除表单,如果可以使用PHP,并只显示#result
容器。
答案 0 :(得分:1)
如果你将表单部分放在一个带有id="form"
的div中,如下所示:
<div id="form">
{% partial __SELF__~"::partials/form" %}
</div>
然后你可以隐藏表单并通过返回要在div中呈现的新部分来显示ajax处理程序的结果:
public function onSend()
{
# save the data
return ['#form' => $this-renderPartial('@partials/success')];
}
这假设您的component partials文件夹中有form
和success
部分。
答案 1 :(得分:0)
只需添加一个标志并检查它是否使用@if或@isset设置。
@isset($flag) // or @if
<form role="form" class="cntct" id="cntct" data-request="onSend" data-request-update="success: '#result'">
<div class="form-group">
<!-- Some input fields here !-->
<div class="row">
<div class="col-sm-6">
<button type="submit" class="btn btn-lg btn-info">Send message</button>
</div>
</div>
</div>
</form>
@endisset
<div id="result">
{% partial 'success' %}
</div>
答案 2 :(得分:0)
另一个选项是使用ajax在表单的div中发送结果 with: data-request-update =&#34;&#39; form-result&#39; :&#39;#yourdiv&#39;&#34;
<div id="contactForm">
<form role="form" data-request="onContactFormSubmit" data-request-update="'form-result' : '#contactForm'" data-request-validate="" _lpchecked="1">
...
</form>
</div>
通过这样做,表单将替换为您的成功消息。如果输入错误,表格将保留在原位。