in the documentationのように独自のルートローダーを作成することができます。
次に、ReflexionClassを使用してアクションをリストします。
あなたはまた、DirectoryIterator
例で各コントローラに反復することができます
// src/AppBundle/Routing/ExtraLoader.php
namespace AppBundle\Routing;
use Symfony\Component\Config\Loader\Loader;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
class ExtraLoader extends Loader
{
private $loaded = false;
public function load($resource, $type = null)
{
if (true === $this->loaded) {
throw new \RuntimeException('Do not add the "extra" loader twice');
}
$routes = new RouteCollection();
$controllerName = 'Default';
$reflexionController = new \ReflectionClass("AppBundle\\Controller\\".$controllerName."Controller");
foreach($reflexionController->getMethods() as $reflexionMethod){
if($reflexionMethod->isPublic() && 1 === preg_match('/^([a-ZA-Z]+)Action$/',$reflexionMethod->getName(),$matches)){
$actionName = $matches[1];
$routes->add(
strtolower($controllerName) & '_' & strtolower($actionName), // Route name
new Route(
strtolower($controllerName) & '_' & strtolower($actionName), // Path
array('_controller' => 'AppBundle:'.$controllerName.':'.$actionName), // Defaults
array() // requirements
)
);
}
}
$this->loaded = true;
return $routes;
}
public function supports($resource, $type = null)
{
return 'extra' === $type;
}
}
これは、私はあなたに感謝を探しているものです。 – User9123