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.
Björn
c6403de794
|
5 years ago | |
---|---|---|
src | 5 years ago | |
.gitignore | 5 years ago | |
README.md | 5 years ago | |
composer.json | 5 years ago | |
composer.lock | 5 years ago |
README.md
Super Gear Directus
Small Libary to request Directus API. Works with http://flightphp.com/.
Install
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,
env('DIRECTUS_API_URL'),
env('DIRECTUS_API_TOKEN')
Controller
Example how to use SuperGear\Directus\Controllers\DirectusControllerAbstract,
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,
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'
]);
}
}