| @ -1,13 +1,126 @@ | |||||
| # Gear - Directus PHP Client | |||||
| # Super Gear Directus | |||||
| Small Libary to request Directus API. | |||||
| Small Libary to request Directus API. Works with [http://flightphp.com/](Flight). | |||||
| ## ItemCollection | |||||
| ## Install | |||||
| **URL** | |||||
| **Token** | |||||
| ```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 | ```PHP | ||||
| $itemCollection = new ItemCollection($url, $token); | |||||
| $articles = $itemCollection->find('articles', ['status' => 'published']); | |||||
| 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' | |||||
| ]); | |||||
| } | |||||
| } | |||||
| ``` | ``` | ||||