parent
323d97f253
commit
e9cfcbca66
@ -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
|
||||
$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'
|
||||
]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
Loading…
Reference in new issue