Вам нужна вспышка Symfony 4, которая действительно работает? (Это не значит, что документ не работает)
Действие вашего контроллера: (
( TranslatorInterface должен быть импортирован: use Symfony\Component\Translation\TranslatorInterface;
)
public function new(Request $request, TranslatorInterface $translator): Response
{
// If you want to get the message from the translations file
$this->addFlash(
'success',
$translator->trans('user.edit.flash.success', [
'%user_info%' => 'balzacLeGeek',
])
);
// If you want to set the message directly
$this->addFlash(
'success',
'L\'utilisateur balzacLeGeek a été mise à jour avec succes'
);
// Rest of your code
// here ....
}
В представлении Twig ( base.html.twig )
{% for label, messages in app.flashes %}
{% for message in messages %}
<div class="alert alert-{{ label }}" role="alert">
{{ message }}
</div>
{% endfor %}
{% endfor %}
Если вы использовали перевод в вашем контроллере, это файл перевода, который у меня есть для примера: (внутри translations / translation.en.yaml )
user:
edit:
flash:
success: Great! The user %metier_info% was edited
error: Sorry! An error was occurend when we have trying to update %metier_info%.
Если вы хотите использовать bootstrap-notify , давайте что-нибудь настроим
В вашем представлении Twig ( base.html.twig )
{% for label, messages in app.flashes %}
{% for message in messages %}
<input type="hidden" class="notifyLabel" value="{{ label }}">
<input type="hidden" class="notifyMessage" value="{{ message }}">
{% endfor %}
{% endfor %}
Всегда в base.html.twig , но в ваших сценариях разделе
<script src="https://github.com/mouse0270/bootstrap-notify/releases/download/3.1.3/bootstrap-notify.min.js"></script>
<script>
$(function() {
var notifyLabel = $('.notifyLabel').val();
var notifyMessage = $('.notifyMessage').val();
if(notifyLabel != undefined) {
$.notify({
// options
icon: 'fas fa-check-circle',
title: '',
message: notifyMessage,
url: '',
target: '_blank'
},{
// settings
element: 'body',
type: notifyLabel,
allow_dismiss: true,
placement: {
from: "bottom",
align: "right"
},
animate: {
enter: 'animated bounceIn',
exit: 'animated bounceOut'
}
}
);
}
});
</script>
Наконец, давайте добавим немного стиля: -)
<style type="text/css">
.notice {
padding: 15px;
background-color: #fafafa;
border-left: 6px solid #7f7f84;
margin-bottom: 10px;
-webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
-moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
}
.notice-sm {
padding: 10px;
font-size: 80%;
}
.notice-lg {
padding: 35px;
font-size: large;
}
.notice-success {
border-color: #80D651;
}
.notice-success>strong {
color: #80D651;
}
.notice-info {
border-color: #45ABCD;
}
.notice-info>strong {
color: #45ABCD;
}
.notice-warning {
border-color: #FEAF20;
}
.notice-warning>strong {
color: #FEAF20;
}
.notice-danger {
border-color: #d73814;
}
.notice-danger>strong {
color: #d73814;
}
</style>