I am trying to use Symfony2 and FOSRestBundle to come up with a REST framework and I am failing miserably.
I have done the following:
in my deps file:
[FOSRest]
git=git://github.com/FriendsOfSymfony/FOSRest.git
target=fos/FOS/Rest
[FOSRestBundle]
git=git://github.com/FriendsOfSymfony/FOSRestBundle.git
target=bundles/FOS/RestBundle
[JMSSerializerBundle]
git=git://github.com/schmittjoh/JMSSerializerBundle.git
target=bundles/JMS/SerializerBundle
In my apps/config.yml
fos_rest:
view:
formats:
rss: true
xml: false
templating_formats:
html: true
force_redirects:
html: true
failed_validation: HTTP_BAD_REQUEST
default_engine: twig
sensio_framework_extra:
view:
annotations: false
In my Controller:
namespace Rest\WebServiceBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use FOS\RestBundle\View\View;
class DefaultController extends Controller
{
public function indexAction($name)
{
$view = View::create()
->setStatusCode(200)
->setData($name);
return $this->get('fos_rest.view_handler')->handle($view);
}
}
When I go to the URL: http://local.symfony.com/web/app_dev.php/hello/test
I get:
Unable to find template "".
500 Internal Server Error - InvalidArgumentException
2 linked Exceptions: Twig_Error_Loader » Twig_Error_Loader
The documentation seems confusing to me and I am unable to continue. All I want is to be able to pass an array of data to the controller and get back a JSON format. Can someone help?
In formats
section of config.yml
you have to enable json format and disable other formats and set default _format
value as json in route. e.g
# app/config/config.yml
fos_rest:
view:
formats:
json: true
rss: false # removing them will also work
xml: false
#.......
#bundle/routing.yml
route_name:
pattern: /route
defaults: { _controller: Bundle:Controller:Method, _format:json }
Or, in controller you can do
$view->setFormat('json');
Also checkout the example links given in the documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With