|
|
|
# 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'
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|