PHP code example of laminas-api-tools / api-tools-hal
1. Go to this page and download the library: Download laminas-api-tools/api-tools-hal library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
laminas-api-tools / api-tools-hal example snippets
[
'rel' => 'link relation',
'url' => 'string absolute URI to use', // OR
'route' => [
'name' => 'route name for this link',
'params' => [ /* any route params to use for link generation */ .,
'options' => [ /* any options to pass to the router */ .,
.,
.,
// repeat as needed for any additional relational links
// Creates a "HalJson" selector for use with laminas-api-tools/api-tools-content-negotiation
'api-tools-content-negotiation' => [
'selectors' => [
'HalJson' => [
'Laminas\ApiTools\Hal\View\HalJsonModel' => [
'application/json',
'application/*+json',
],
],
],
],
class Module
{
public function onBootstrap($e)
{
$app = $e->getTarget();
$services = $app->getServiceManager();
$helpers = $services->get('ViewHelperManager');
$hal = $helpers->get('Hal');
// The HAL plugin's EventManager instance does not compose a SharedEventManager,
// so you must attach directly to it.
$hal->getEventManager()->attach('renderEntity', [$this, 'onRenderEntity']);
}
public function onRenderEntity($e)
{
$entity = $e->getParam('entity');
if (! $entity->getEntity() instanceof SomeTypeIHaveDefined) {
// do nothing
return;
}
// Add a "describedBy" relational link
$entity->getLinks()->add(\Laminas\ApiTools\Hal\Link\Link::factory([
'rel' => 'describedBy',
'route' => [
'name' => 'my/api/docs',
],
]));
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.