我有一个例外,我想通过Symfony 4中的一个Flashbag进行显示。我尝试了几件事没有结果。
$fileName = md5(uniqid()).'.'.$file->guessExtension();
try {
$file->move($this->getParameter('file_directory'), $fileName);
}
catch (FileException $exception) {
*** How to display the FileException in a flashbag ?***
}
在我的树枝文件中,我有这个:
{# UploadFile Error message #}
{% for flash_message in app.session.flashbag.get('UploadFileError') %}
<div class="container text-center alert alert-danger mt-5 mb-5 font-weight-bold">
{{ flash_message }} <span class="fas fa-exclamation-circle"></span>
</div>
{% endfor %}
我也添加了这个:
{# UploadFile Error #}
{% if error is defined %}
{% if error %}
<div class="alert alert-danger mb-5 font-weight-bold" role="alert">
{{ error.messageKey|trans(error.messageData, 'security') }} <span class="fas fa-lock"></span>
</div>
{% endif %}
{% endif %}
但是即使我正在控制器中,错误也只会出现在调试栏中。
预先感谢您的帮助。
答案 0 :(得分:0)
没有自动装配功能,您可以这样做:
try {
$file->move($this->getParameter('file_directory'), $fileName);
} catch (FileException $exception) {
$this->get('session')->getFlashBag()->add('error', $exception->getMessage());
}
如果启用了自动装配(首选方式),则将FlashBagInterface
对象作为方法或构造函数的参数传递
/**
* @param FlashBagInterface $bag
*/
public function checkFile(FlashBagInterface $bag)
{
$fileName = md5(uniqid()).'.'.$file->guessExtension();
try {
$file->move($this->getParameter('file_directory'), $fileName);
} catch (FileException $exception) {
$bag->add('error', $exception->getMessage());
}
}
然后在树枝上
{% for label, messages in app.flashes(['error']) %}
{% for message in messages %}
<div class="alert alert-{{ label }}">
{{ message }}
</div>
{% endfor %}
{% endfor %}
有关更多信息:Flash Messages