Drupal8 的路由支持占位符,该占位符将被 URL 中的动态值替代。这个占位符可以在控制器的方法中直接当作一个同名变量使用。比如 example.routing.yml
的这个例子:
example.name: path: 'example/{name}' defaults: _content: '\Drupal\example\Controller\ExampleController::content' requirements: _permission: 'access content'
这个 {name}
占位符是 URL 里的一个别名,在控制器方法中可以被当作 $name
变量使用,如下:
<?php class ExampleController { // ... public function content($name) { // name 是一个字符串值 // 处理 $name 包含的内容 } } ?>
通常在 PHP 代码中变量取什么名字无关紧要,但在这儿情况就不一样了:方法的参数表中的变量名必须和占位符保持一致。如果参数名和占位符别名一样,那么值就会被传递进来,参数的顺序可以随意。
参数自动转换
当在 URL 中使用节点 ID 时,ID 会被“参数转换系统”自动转换为节点对象。详情请参看 Parameter upcasting in routes。