diff --git a/framework/core/src/Api/Actions/Discussions/IndexAction.php b/framework/core/src/Api/Actions/Discussions/IndexAction.php index 29ccadcb4..51c70c302 100644 --- a/framework/core/src/Api/Actions/Discussions/IndexAction.php +++ b/framework/core/src/Api/Actions/Discussions/IndexAction.php @@ -4,6 +4,7 @@ use Flarum\Core\Search\Discussions\DiscussionSearchCriteria; use Flarum\Core\Search\Discussions\DiscussionSearcher; use Flarum\Api\Actions\SerializeCollectionAction; use Flarum\Api\JsonApiRequest; +use Flarum\Http\UrlGeneratorInterface; use Tobscure\JsonApi\Document; class IndexAction extends SerializeCollectionAction @@ -15,6 +16,13 @@ class IndexAction extends SerializeCollectionAction */ protected $searcher; + /** + * The URL generator. + * + * @var \Flarum\Http\UrlGeneratorInterface + */ + protected $url; + /** * The name of the serializer class to output results with. * @@ -47,10 +55,12 @@ class IndexAction extends SerializeCollectionAction * Instantiate the action. * * @param \Flarum\Core\Search\Discussions\DiscussionSearcher $searcher + * @param \Flarum\Http\UrlGeneratorInterface $url */ - public function __construct(DiscussionSearcher $searcher) + public function __construct(DiscussionSearcher $searcher, UrlGeneratorInterface $url) { $this->searcher = $searcher; + $this->url = $url; } /** @@ -79,7 +89,7 @@ class IndexAction extends SerializeCollectionAction static::addPaginationLinks( $document, $request, - route('flarum.api.discussions.index'), + $this->url->toRoute('flarum.api.discussions.index'), $total ?: $results->areMoreResults() ); diff --git a/framework/core/src/Api/Actions/JsonApiAction.php b/framework/core/src/Api/Actions/JsonApiAction.php index 844c229a0..e5d4b7c6c 100644 --- a/framework/core/src/Api/Actions/JsonApiAction.php +++ b/framework/core/src/Api/Actions/JsonApiAction.php @@ -46,14 +46,6 @@ abstract class JsonApiAction implements ActionInterface return new Response($data, $status); } - protected function route($name, array $parameters = []) - { - /** @var \Flarum\Http\UrlGeneratorInterface $generator */ - $generator = app('Flarum\Http\UrlGeneratorInterface'); - - return $generator->toRoute($name, $parameters); - } - /** * Handle an API request and return an API response. * diff --git a/framework/core/src/Api/Actions/Users/IndexAction.php b/framework/core/src/Api/Actions/Users/IndexAction.php index fd8ef8ccd..fab722ceb 100644 --- a/framework/core/src/Api/Actions/Users/IndexAction.php +++ b/framework/core/src/Api/Actions/Users/IndexAction.php @@ -4,6 +4,7 @@ use Flarum\Core\Search\Users\UserSearchCriteria; use Flarum\Core\Search\Users\UserSearcher; use Flarum\Api\Actions\SerializeCollectionAction; use Flarum\Api\JsonApiRequest; +use Flarum\Http\UrlGeneratorInterface; use Tobscure\JsonApi\Document; class IndexAction extends SerializeCollectionAction @@ -15,14 +16,23 @@ class IndexAction extends SerializeCollectionAction */ protected $searcher; + /** + * The URL generator. + * + * @var \Flarum\Http\UrlGeneratorInterface + */ + protected $url; + /** * Instantiate the action. * * @param \Flarum\Core\Search\Users\UserSearcher $searcher + * @param \Flarum\Http\UrlGeneratorInterface $url */ - public function __construct(UserSearcher $searcher) + public function __construct(UserSearcher $searcher, UrlGeneratorInterface $url) { $this->searcher = $searcher; + $this->url = $url; } /** @@ -71,8 +81,12 @@ class IndexAction extends SerializeCollectionAction $document->addMeta('total', $total); } - // TODO: Add route() method! - static::addPaginationLinks($document, $request, 'flarum.api.users.index', $total ?: $results->areMoreResults()); + static::addPaginationLinks( + $document, + $request, + $this->url->toRoute('flarum.api.users.index'), + $total ?: $results->areMoreResults() + ); return $results->getUsers(); }