Skip to content

Commit

Permalink
routes: allow including searchable fields
Browse files Browse the repository at this point in the history
  • Loading branch information
jarischaefer committed Apr 19, 2017
1 parent 255562d commit fb56997
Showing 1 changed file with 33 additions and 2 deletions.
35 changes: 33 additions & 2 deletions src/Jarischaefer/HalApi/Helpers/ResourceRoute.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?php namespace Jarischaefer\HalApi\Helpers;
<?php

namespace Jarischaefer\HalApi\Helpers;

/**
* Class ResourceRoute
Expand Down Expand Up @@ -207,17 +209,46 @@ public function rawDelete(string $uri, string $method): ResourceRoute
}

/**
* @param iterable $searchableFields
* @return ResourceRoute
*/
public function searchable(): ResourceRoute
public function searchable(iterable $searchableFields = null): ResourceRoute
{
$this->routeHelper
->get($this->name . '/search', $this->controller, 'search')
->get($this->name . '/search?' . self::PAGINATION_QUERY_STRING, $this->controller, 'search');

$searchableQueryString = $this->createSearchableQueryString($searchableFields);

if (!empty($searchableQueryString)) {
$uri = $this->name . '/search?' . self::PAGINATION_QUERY_STRING . '&' . $searchableQueryString;
$this->routeHelper->get($uri, $this->controller, 'search');
}

return $this;
}

/**
* @param iterable $searchableFields
* @return string
*/
private function createSearchableQueryString(iterable $searchableFields = null): string
{
if ($searchableFields === null) {
return '';
}

$string = '';
$delimiter = '';

foreach ($searchableFields as $field) {
$string .= $delimiter . $field . '={' . $field . '}';
$delimiter = '&';
}

return $string;
}

/**
* Call this method once you're done registering additional routes to the current resource.
* The original RouteHelper instance is returned, allowing infinite chaining of ordinary routes and resources.
Expand Down

0 comments on commit fb56997

Please sign in to comment.