Contributed by
Nicolas Grekas
in #26284.

在 Symfony 4.1 中我们奋战在 Routing组件 以令它成为 最快的PHP路由,支持 路由path的翻译,令 路由配置更加智能,同时允许 对路由名称施加前缀.

Symfony 4.1 中添加的另一个路由功能是,当导入路由集合时,配置根路由结尾斜杠的能力。思考下列配置:

1
2
3
4
5
6
7
# config/routes.yaml
_api_routes:
    resource: '../src/Controller/Api'
    type: 'annotation'
    prefix: '/api'
 
# ...

任何导入的路由,若使用了 / 作为其路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Symfony\Component\Routing\Annotation\Route;
 
class ApiController extends Controller
{
    /**
     * @Route("/", name="api_index")
     */
    public function index()
    {
        // ...
    }
 
    // ...
}

Symfony 会添加 / 路径到导入的前缀中,因此结果会是 /api/ 的路径。这一行为是 Symfony 广为人知的限制,不可能让一个导入的根路由存在于一个没有结尾斜杠的前缀下。在 Symfony 4.1 中我们修复了这种限制,引入了全新的名为 trailing_slash_on_root 选项:

1
2
3
4
5
6
7
8
# config/routes.yaml
_api_routes:
    resource: '../src/Controller/Api'
    type: 'annotation'
    prefix: '/api'
    # to maintain backward compatibility, its value is 'true' by default
    # 为保持向后兼容,其值默认为 'true'
    trailing_slash_on_root: false