Contributed by
Samuel Roze
in #25178.
在 Symfony 3.4 和 4.0 中,我们添加了一种可能性,即把定义在 controller 类的类级 @Route
annotation 中的 name
选项值作为 控制器内全部路由的前缀。下例中,路由名称将会是 blog_index
和 blog_post
:
1 2 3 4 5 6 7 8 9 10 11 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
/** @Route("/blog", name="blog_") */
class BlogController extends Controller
{
/** @Route("/", name="index") */
public function indexAction() { ... }
/** @Route("/posts/{slug}", name="post") */
public function showAction(Post $post) { ... }
} |
在 Symfony 4.1 中,我们通过添加全新的 name_prefix
选项而改进了此项功能,以便对那些从配置文件中导入的路由,施以前缀。这将能够,比如,导入一个给定的文件许多次,同时调整某些第三方类库/bundle的路由名称:
1 2 3 4 5 6 7 8 9 10 11 | app:
resource: ../controller/routing.yaml
api:
resource: ../controller/routing.yaml
# this prefix is added to all the action route names
# 这个前缀将被添加到所有action的路由name中
name_prefix: api_
# this prefix is added to all the action URLs
# 这个前缀将被添加到所有action的URL中
prefix: /api |
若使用 XML 格式,上述配置将是:
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing
http://symfony.com/schema/routing/routing-1.0.xsd">
<import resource="../controller/routing.xml" />
<import resource="../controller/routing.xml" prefix="/api" name-prefix="api_" />
</routes> |