Skip to content

Instantly share code, notes, and snippets.

@sasezaki
Created October 4, 2013 15:51
Show Gist options
  • Save sasezaki/6828137 to your computer and use it in GitHub Desktop.
Save sasezaki/6828137 to your computer and use it in GitHub Desktop.
Automatic find page per route for PhlySimplePage.
<?php
class FilePerRouteIterator extends IteratorIterator
{
public function key()
{
return pathinfo(parent::key(), PATHINFO_FILENAME);
}
public function current()
{
$pages_dir =
dirname(substr($p = $this->getPathname(), strlen(dirname(dirname(dirname($p)))) + 1));
return [
'type' => 'Literal',
'options' => [
'route' => '/'.$this->key(),
'defaults' => [
'controller' => 'PhlySimplePage\Controller\Page',
'template' => $pages_dir.'/'.$this->key(),
]
]
];
}
}
return [
'router' => [
'routes' =>
new FilePerRouteIterator(new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
__DIR__.'/../../module/Application/view/application/pages',
FilesystemIterator::SKIP_DOTS|FilesystemIterator::KEY_AS_FILENAME
)
)
)
]
];
/**
return array(
'router' => array(
'routes' => array(
'about' => array(
'type' => 'Literal',
'options' => array(
'route' => '/about',
'defaults' => array(
'controller' => 'PhlySimplePage\Controller\Page',
'template' => 'application/pages/about',
),
),
),
),
),
);
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment