跳转到主要内容
晨雨 提交于 26 August 2014

原文地址:Various objects used in relation with Routing

最后更新于2014年10月14日 15:50:25

  1. 在PHP表单中,一个路由对象仅仅是 yml 路由文件而已。它不包含任何你需要的方法,仅仅是 getters ,被叫作是值对象(类似JSON)。这不是一个需要你去获取或者花大部分时间与之打交道的对象,大多数情况下方法都用路由名称或参数来替代。
  2. 一个 RouteMatch 对象包含了路由的名称(正如之前所说,这个对象比路由本身更加重要)、路由对象、参数和与匹配相关的未处理参数。例如如果匹配是针对 node/123 的,那么路由会自动包含 /node/{node} 的路由对象,未处理参数是 [1 => 123],但参数实际上会变成 [1=> Node::load(123)]。除了getters, RouteMatch 不包含任何可用方法。
  3. CurrentRouteMatch 对象也是一个 RouteMatch对象,但是它包含了当前正在使用的路由对象,它被当成服务来使用并同时被传递给每一个 hook_help方法。再则,你仅可以在该对象上使用 getters 。
  4. 当前的 Url 对象包含了产生 URL 的路由名称、参数和 options ,如 'absolute' 或 'query' (不像 RouteMatch 那样已经转换了参数并且去除了 options)。当获取系统路径亦或是获取可被添加到 #type href 渲染键的渲染数组时,Url 对象显得尤为有用。

词汇表:

  • RouteMatch: \Drupal\Core\Routing\RouteMatchInterface
  • CurrentRouteMatch: \Drupal\Core\Routing\CurrentRouteMatch