# RestHalBundle
Bundle to manage Hal API with Symfony2.
## Installation
Edit your composer.json:
"require": {
"alterway/rest-hal-bundle" : "master"
}And run Composer:
php composer.phar update alterway/rest-hal-bundle
Add the following line at the end of your autoload.php:
Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass'));Enable your bundle in your AppKernel.php:
// app/AppKernel.phppublicfunctionregisterBundles()
{
$bundles = array(
// ...newAlterway\Bundle\RestHalBundle\AwRestHalBundle(),
);
}A resource is a PHP class who represents informations about elements of your applications.
For example:
// src/Alterway/DemoBundle/ApiResource/UserResource.phpnamespaceAlterway\DemoBundle\ApiResource;
useAlterway\Bundle\RestHalBundle\ApiResource\Resource;
class UserResource extends Resource
{
publicfunction__construct(RouterInterface$router, User$user)
{
parent::__construct($router);
$this->user = $user;
}
protectedfunctionprepare()
{
$this->addLink('next', '/users?page=2');
$this->addLink('search', '/users?id={user_id}');
}
protectedfunctiongenerateUri()
{
return$this->router->generate('demo.user', array('id' => 1));
}
}Remember to enable annotations :
sensio_framework_extra:
router: { annotations: true }
request: { converters: true }
view: { annotations: true }
cache: { annotations: true }
// some controller or yoursuseAlterway\DemoBundle\ApiResource\UserResource;
/** * @Hal(code="200") */publicfunctionuserWithAnnotateAction(Request$request)
{
$user = newUser;
returnnewUserResource($this->get('router'), $user);
}// some controller or yoursuseAlterway\Bundle\HalRestBundle\Response\HalResponse;
useAlterway\DemoBundle\ApiResource\UserResource;
publicfunctionuserWithoutAnnotateAction(Request$request)
{
$user = newUser;
$resource = newUserResource($this->get('router'), $user);
returnnewHalResponse($resource, 200);
}## Contribute
Install dev dependencies:
php composer.phar update
Run Behat:
./vendor/bin/behat @AwRestHalBundle
Copyright (c) 2013 La Ruche Qui Dit Oui!. See LICENSE for details.
- Jean-François Lépine (Halleck45)
- Benoît Merlet (trompette)
- Antoine Lévêque (gh0stonio)