From 4fa376e12c0e10c120db7b962e1ded7547c4c4d1 Mon Sep 17 00:00:00 2001 From: yacinebenfaid Date: Wed, 9 Oct 2013 14:13:28 +0200 Subject: [PATCH 1/2] add singleResource --- .../ApiResource/ProxyResource.php | 25 +++++++++++++++++++ .../RestHalBundle/ApiResource/Resource.php | 7 ++++++ .../RestHalBundle/Renderer/ProxyRenderer.php | 24 ++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 src/Alterway/Bundle/RestHalBundle/Renderer/ProxyRenderer.php diff --git a/src/Alterway/Bundle/RestHalBundle/ApiResource/ProxyResource.php b/src/Alterway/Bundle/RestHalBundle/ApiResource/ProxyResource.php index 7db32e2..3b90f9e 100644 --- a/src/Alterway/Bundle/RestHalBundle/ApiResource/ProxyResource.php +++ b/src/Alterway/Bundle/RestHalBundle/ApiResource/ProxyResource.php @@ -2,6 +2,7 @@ namespace Alterway\Bundle\RestHalBundle\ApiResource; +use Alterway\Bundle\RestHalBundle\Renderer\ProxyRenderer; use Nocarrier\Hal; class ProxyResource extends Hal @@ -19,4 +20,28 @@ public function setUri($uri) return $this; } + /** + * Add an embedded resource, identified by $rel and represented by $resource. + * + * @param string $rel + * @param Hal $resource + * @return ProxyResource + */ + public function addSingleResource($rel, Hal $resource = null) + { + $this->resources[$rel] = $resource; + return $this; + } + + /** + * Return the current object in a application/hal+json format (links and resources) + * + * @param bool $pretty Enable pretty-printing + * @return string + */ + public function asJson($pretty=false) + { + $renderer = new ProxyRenderer(); + return $renderer->render($this, $pretty); + } } \ No newline at end of file diff --git a/src/Alterway/Bundle/RestHalBundle/ApiResource/Resource.php b/src/Alterway/Bundle/RestHalBundle/ApiResource/Resource.php index 804fb8c..86131d3 100644 --- a/src/Alterway/Bundle/RestHalBundle/ApiResource/Resource.php +++ b/src/Alterway/Bundle/RestHalBundle/ApiResource/Resource.php @@ -35,6 +35,13 @@ public function addResource($rel, ResourceInterface $resource = null) return $this; } + public function addSingleResource($rel, ResourceInterface $resource = null) + { + $this->hal->addSingleResource($rel, $resource->getHal()); + return $this; + } + + public function setData(array $data) { $this->hal->setData($data); diff --git a/src/Alterway/Bundle/RestHalBundle/Renderer/ProxyRenderer.php b/src/Alterway/Bundle/RestHalBundle/Renderer/ProxyRenderer.php new file mode 100644 index 0000000..91bd533 --- /dev/null +++ b/src/Alterway/Bundle/RestHalBundle/Renderer/ProxyRenderer.php @@ -0,0 +1,24 @@ +arrayForJson($resources); + + } + + return parent::resourcesForJson($resources); + } +} \ No newline at end of file From 18d1a75c3fd2f270d1c2e26191f455f1e9ca5a54 Mon Sep 17 00:00:00 2001 From: yacinebenfaid Date: Wed, 9 Oct 2013 16:57:51 +0200 Subject: [PATCH 2/2] composer --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c6b321d..88ff205 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "php": ">=5.3.3", "symfony/symfony": "~2.2", "sensio/framework-extra-bundle": "~2.2", - "nocarrier/hal": "*" + "nocarrier/hal": "0.9.2" }, "require-dev": { "behat/behat": ">=2.2.2",