Об этом много тем, но ни один из ответов, которые я нашел, не помог мне.
Я хочу использовать FOSRestBundle для создания API, возвращающего JSON (на данный момент я, возможно, добавлю XML в будущем).
Когда я делаю запрос на свой маршрут, у меня есть следующее исключение:
[
{
message: "Unable to find template "".",
class: "InvalidArgumentException",
...
У меня есть контроллер с динамически построенным маршрутом. Я настроил формат json и возвращаю представление с массивом данных для сериализации в json. Без использования FOSRestBundle я бы вернул JSONResponse и покончил с этим, но, как я уже сказал, в будущем я добавлю другие форматы, поэтому я хотел бы сделать все правильно.
Это мой маршрут:
categories:
type: rest
resource: Certiz\Bundle\ExamBundle\Controller\CategoryController
prefix: /api
requirements:
_format: "json"
Я запрашиваю следующий маршрут: /api/categories
Мой config.yml:
fos_rest:
view:
formats:
json: true
xml: false
html: false
rss: false
templating_formats:
json: true
xml: false
html: false
rss: false
view_response_listener: 'force'
routing_loader:
default_format: json
include_format: true
exception:
codes:
'Symfony\Component\Security\Core\Exception\InsufficientAuthenticationException': 401
messages:
'Symfony\Component\Security\Core\Exception\InsufficientAuthenticationException': true
jms_serializer:
metadata:
directories:
exam:
namespace_prefix: "Certiz\\Bundle\\ExamBundle"
path: "@CertizExamBundle/Resources/config/serializer"
И мой контроллер:
public function getCategoriesAction()
{
$categories = $this
->getDoctrine()
->getManager()
->getRepository('Certiz\Bundle\ExamBundle\Entity\Category')
->getTree();
return View::create()
->setStatusCode(200)
->setData($categories)
;
} // "get_categories" [GET] /categories
Я использую symfony 2.5 с FOSRestBundle 1.4.2.
С уважением