[英]OneupUploaderBundle: Render response message in twig template
我在項目中使用OneupUploaderBundle上傳文件。
我的問題是:
如何在樹枝模板中從UploadListener渲染response.msg? 我如何評估我的回應。
https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/response.md
//service.yml
acme.upload_listener:
class: Acme\AcmeBundle\EventListener\UploadListener
arguments: ["@doctrine.orm.entity_manager"]
tags:
- { name: kernel.event_listener, event: oneup_uploader.post_persist, method: onUpload }
//UploadListener.php
class UploadListener
{
protected $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function onUpload(PostPersistEvent $event)
{
$file = $event->getFile();
$session = $event->getRequest()->getSession();
$session->set('file', $file->getPathName());
$response = $event->getResponse();
$response['msg'] = "File stored in session";
=> show response.msg in my twig-template. But how?
}
}
// JS(在樹枝模板中)
$('#fileupload').fileupload({});
我沒有找到示例...
謝謝你的幫助。
好吧,您無法在Twig模板中執行此操作。 Twig模板在頁面加載時呈現,並且文件上傳是使用Ajax完成的。 您可以做的是在javascript中更改DOM。
例如:
$('#fileupload').fileupload({}).bind('fileuploaddone', function (e, data) {
$("body").prepend('<p>File stored in session</p>');
});
您還可以將一些數據發送回客戶端:
$('#fileupload').fileupload({}).bind('fileuploaddone', function (e, data) {
if (data.result.filename != undefined) {
$("body").prepend('<p>File ' + data.result.filename + ' stored in session</p>');
}
});
但是,為此,您需要為oneup_uploader.post_persist
事件創建一個事件偵聽器,該事件偵聽器將把文件名和響應一起發送回去,如您鏈接到的文檔中所述。
<?php
namespace Foo\BarBundle\EventListener;
use Oneup\UploaderBundle\Event\PostPersistEvent;
class UploadListener
{
public function onUpload(PostPersistEvent $event)
{
$request = $event->getRequest();
$files = $request->files->get('files');
$response = $event->getResponse();
$filename = $files[0]->getClientOriginalName();
$response['filename'] = $filename;
}
}
在您的services.yaml中:
# Event listener to handle uploaded files
foobar.upload_listener:
class: Foo\BarBundle\EventListener\UploadListener
tags:
- { name: kernel.event_listener, event: oneup_uploader.post_persist.default_uploader, method: onUpload }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.