|
|
- # Super Gear Directus
-
- Small Libary to request Directus API. Works with [http://flightphp.com/](Flight).
-
- ## Install
-
- ```bash
- composer require tentakelfabrik/super-gear-directus
- ```
-
- ## Requirements
-
- For handle token and url for the Directus Server you have to use
- [https://github.com/vlucas/phpdotenv](vlucas/phpdotenv),
-
- ```php
- env('DIRECTUS_API_URL'),
- env('DIRECTUS_API_TOKEN')
- ```
-
- ## Controller
-
- Example how to use SuperGear\\Directus\\Controllers\\DirectusControllerAbstract,
-
- ```php
- class PageController extends DirectusControllerAbstract
- {
- /** slug for home */
- const HOME_SLUG = 'home';
-
- /** set default view */
- protected $defaultView = 'page/default';
-
- /**
- * get home page from slug
- *
- *
- */
- public function indexAction()
- {
- $repository = Manager::get('Page');
- $page = $repository->findOneBySlug(self::HOME_SLUG);
-
- if ($this->notFound($page)) {
- $this->app->redirect('404');
- }
-
- $this->render($page);
- }
-
- /**
- * get single page from slug
- *
- *
- * @param string $slug
- */
- public function getAction($slug)
- {
- $repository = Manager::get('Page');
- $page = $repository->findOneBySlug($slug);
-
- if ($this->notFound($page)) {
- $this->app->redirect('404');
- }
-
- $this->render($page);
- }
-
- /**
- * if page not found
- *
- */
- public function notFoundAction()
- {
- $page = [
- 'data' => [
- 'view' => 'page/404'
- ]
- ];
-
- $this->render($page);
- }
- }
- ```
-
- ## Repositories
-
- Example to use the SuperGear\\Directus\\Respositories\\RepositoryAbstract,
-
- ```PHP
- class PageRepository extends RepositoryAbstract
- {
- /** name of the collection */
- protected $name = 'page';
-
- /**
- * find single page with a slug,
- * page must be published
- *
- * @param string $slug
- * @return array
- */
- public function findOneBySlug($slug)
- {
- return $this->itemCollection->findOne($this->name, [
- 'filter[slug][eq]' => $slug,
- 'filter[status][eq]' => 'published'
- ]);
- }
-
- /**
- * find single page with a slug,
- * page must be published
- *
- * @param string $slug
- * @return array
- */
- public function findByView($view)
- {
- return $this->itemCollection->find($this->name, [
- 'filter[view][eq]' => $view,
- 'filter[status][eq]' => 'published'
- ]);
- }
- }
- ```
|