您可以创建自己的路由装载程序,如解释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