You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
super-gear-directus/README.md

127 lines
2.5 KiB

5 years ago
# Super Gear Directus
5 years ago
5 years ago
Small Libary to request Directus API. Works with [http://flightphp.com/](Flight).
5 years ago
5 years ago
## Install
5 years ago
5 years ago
```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,
5 years ago
```PHP
5 years ago
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'
]);
}
}
5 years ago
```