我想在我们的页面上添加对flash消息的支持.我按照此处的文档实现了这一点.
我将以下snipplet添加到我的基本布局中.(我也尝试将其添加到特定的操作模板中).
{% if app.session.hasFlash('notice') %}
<div id="flashmessage" class="flash-notice">
{{ app.session.flash('notice') }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
添加以下错误后抛出
Twig_Error_Runtime:第66行"MyBundle :: layout.html.twig"中不存在""的"hasFlash"项
还有什么我需要做的吗?
我在控制器中设置了一条flash消息,代码如下:
$this->get('session')->getFlashBag()->add('success', 'Message sent successfully');
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我使用以下内容(尝试)显示它:
{% if app.session.flashbag.has('success') %}
<div id="flash">
{{ app.session.flashbag.get('success') }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
问题是,尽管API文档声明get
返回一个字符串,但我得到一个数组到字符串转换异常.如果我将模板中的代码更改为:
{% for flashMessage in app.session.flashbag.get('success') %}
<div id="flash">
{{ flashMessage }}
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
它完美地运作.我宁愿不在这里使用循环,因为我只是要么有或没有.
有没有一个解决方案,我可以检查是否存在单个Flash消息并显示它是否存在?还是我坚持使用无用的循环?
我正在寻找一种在sonata管理包的管理控制器中设置flash消息的方法,它们允许在CRUDController中设置flash消息
$this->get('session')->setFlash('sonata_flash_error', 'flash_batch_merge_error');
Run Code Online (Sandbox Code Playgroud)
但不在管理控制器中,
这是我的管理员控制器
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollection;
class ConfigAdmin extends Admin
{
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->with('System Settings')
->add('Name','text', array('label' => "Configuration Name"))
->add('Language', 'choice', array(
'label' => 'System Language',
'choices' => array(0 => 'English', 1 => 'Swedish'),
'preferred_choices' => array(0),
))
->add('commonmail','text', array('label' => "Common e-Mail"))
->add('dateformat','text', array('label' => "Date format"))
->add('currencyformat','text', array('label' => "Currency format"))
->end()
}
public function postUpdate($object) {
// here i need to perform some …
Run Code Online (Sandbox Code Playgroud) 我在渲染树枝模板时在控制器中设置了一条flash消息.如果有帖子操作,我想重定向到同一页面,但更改Flash消息.
if ($request->isMethod('POST')) {
...
...
$this->get('session')->getFlashBag()->clear(); // Does not work
$this->get('session')->getFlashBag()->all(); // Does not work
$request->getSession()->getFlashBag()->set('user-notice', $flash_message2);
return $this->redirect($request->headers->get('referer'));
}
$this->get('session')->getFlashBag()->set('user-notice', $flash_message1);
return $this->render(....
Run Code Online (Sandbox Code Playgroud)
但问题是显示的flash消息是$ flash_message1,应该是$ flash_message2.
当尝试使用add而不是set时,我可以看到它们.我试图使用Symfony2 clear()
和all()
函数:http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Session/Flash/FlashBagInterface.html 但没有任何改变.
任何的想法?谢谢 !!!
如果表单成功,我正在尝试翻译我发送的flash消息.正常请求如下所示:
$request->getSession()->getFlashBag()->add(
'notice',
'Your E-Mail has been sent.'
);
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用以下变量翻译消息:
$request->getSession()->getFlashBag()->add(
'notice',
'contact.message.email_has_been_sent'
);
Run Code Online (Sandbox Code Playgroud)
发送表单后,消息显示"contact.message.email_has_been_sent".所以它没有找到翻译,但变量是正确的.我在模板文件中测试了它.有谁有想法,我怎么能解决这个问题?我还没找到任何有用的东西.
在我的应用程序中,用户可以为其他用户发布挑战 因此,在成功发布挑战后,我正在显示一条相同的flash消息.但现在我想在几秒钟后隐藏这条消息.所以我写了以下代码:
$(document).ready(function(){
setTimeout(function() {
$("#successMessage").hide('blind', {}, 500)
}, 5000);
});
<div id="successMessage" style="text-align:center; width:100%">
<FONT color="green">
<%if flash[:alert]=="Your challenge is posted successfully."%>
<h4><%= flash[:alert] if flash[:alert].present? %>
<%end%>
</font>
</div>
Run Code Online (Sandbox Code Playgroud)
但是这段代码并没有隐藏div"successMessage".
我正在尝试使用turbolinks 5找到一种处理rails(v4.1)flash消息的方法.
我尝试添加data-temporary="true"
到每个flash消息div,然后像:
$(document).on('turbolinks:before-cache', function () {
$('[data-temporary]').remove();
});
Run Code Online (Sandbox Code Playgroud)
所以旧的flash消息不会被缓存,并且在用户下次访问同一页面时不会显示.
但是,这使我在我正在使用的页面上出现问题,flash.now
因为在这些页面上,flash已从缓存版本中删除,但随后turbolinks刷新服务器中的内容,flash.now
然后出现消息,这有点不和用户观点.
我已经环顾四周,无法找到闪光灯的任何内容,以表明它们是否.now
存在,以便data-temporary
可以应用于临时闪光灯.
我正在尝试使用turbolink而不是禁用它的功能.
我正试图找到一种方法来删除闪光before-cache
但不是如果它们是flash.now
类型.
有什么建议?
任何人都可以帮我截取传入的Flash消息(特别是来自电信公司的消息,他们在发送消息之后发送我们当前的余额).
我的应用程序处理批量发送短信,我不希望闪存消息偶尔弹出.Android上有可能吗?
编辑:每个人都说它不可能高于Android 1.6,但我在Google Play上发现了类似的应用程序,但我想要这种应用程序的来源.请帮忙.
编辑:一年多过去了,我仍然没有得到解决方案.任何人都可以帮助解决这个线程.. ??
我正在尝试在使用Thymeleaf的Spring-Boot构建的项目中实现Flash消息.但我发现它到目前为止还不是内置功能.如果是这种情况,在重定向后向用户显示消息的选项有哪些.
我正在尝试实现链接中提出的解决方案,但它不打算在Spring-Boot上工作,如引言中所述.
我想FlashMessage
在所需时间重新加载页面时显示错误(或成功)消息
我正在使用FlashMessage
,我的代码看起来像
render() {
return (
{this.state.error ? <FlashMessage duration={5000}><strong>{this.state.error.message}</strong></FlashMessage> : ''}
//Some table here presenting data
<Button variant="outline-info" type="submit" size="lg" block className="button-custom" onClick={this.handleSubmit.bind(this)}>
Submit
</Button>
)}
Run Code Online (Sandbox Code Playgroud)
对于我的有状态组件,error
由
handleSubmit(event) {
let data = {
name: this.state.name,
unit_price: this.state.unit_price,
length: this.state.length,
time: this.state.selectedDate,
instructor: this.state.instructor,
}
ApiService.postLesson(data)
.then(res => {
this.setState({
message: 'Success!'
});
})
.catch(error => {
this.setState({
message: error,
error: error,
});
console.log(error);
})
Run Code Online (Sandbox Code Playgroud)
};
而我的ApiService.postLesson
是
const instance = axios.create({
headers: …
Run Code Online (Sandbox Code Playgroud) flash-message ×10
symfony ×5
php ×3
twig ×2
admin ×1
android ×1
controller ×1
forms ×1
intercept ×1
javascript ×1
jquery ×1
reactjs ×1
sms ×1
sonata-admin ×1
spring-boot ×1
templates ×1
thymeleaf ×1
translation ×1
turbolinks-5 ×1