Итак, я работаю над пользовательским приложением Sonata Admin. Я пытаюсь создать пользовательское действие для загрузки файла в контроллер, который расширяет CRUDController.Пользовательские маршруты Sonata Admin Bundle, используя аннотации
Действие:
/**
* @Route("/download-list/{id}", name="download_list")
*/
public function downloadListAction($id = null) {
$id = $this->get('request')->get($this->admin->getIdParameter());
$object = $this->admin->getObject($id);
if (!$object) {
throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id));
}
if (false === $this->admin->isGranted('VIEW', $object)) {
throw new AccessDeniedException();
}
$entity = $this->admin->getSubject();
$exportFolder = $this->container->getParameter('export_folder');
$filePath = $this->get('kernel')->getRootDir() . $exportFolder . DIRECTORY_SEPARATOR . $entity->createListFileName() . $this->extension;
$response = new BinaryFileResponse($filePath);
$response->headers->set('Content-Type', 'text/plain');
return $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $entity->createListFileName());
}
В routing.yml
я есть
spam_list_admin:
resource: "@SpamAdminCoreBundle/Controller/SpamListAdminController.php"
type: annotation
prefix: /list
Маршрутизатор отладчик показывает мой маршрут, я могу генерировать Ури с помощью $this->get('router')->generate('download_list', array('id' => $id))
но если доступ к нему (app_dev.php/список/список загрузок/6) Я получаю
There is no `_sonata_admin` defined for the controller `SpamAdmin\CoreBundle\Controller\SpamListAdminController` and the current route `download_list`.
Это сообщение очевидно Как дерьмо, какая здесь реальная сделка?
спасибо. тем временем я заметил, что мне нужно настроить маршрут «для symfony», чтобы иметь возможность создавать uri, используя «$ this-> get (« router ») -> generate», а также «для Sonata», чтобы иметь доступ страница. –