【问题标题】:Symfony2 - routing to a fragment identifierSymfony2 - 路由到片段标识符
【发布时间】:2014-09-01 09:27:51
【问题描述】:

有没有办法使用 Symfony2 路由器来构建包含片段标识符的 URI?

我们有一个页面列出了许多不同的实体(称之为“列表”页面)——当用户点击某个实体详细信息中的链接时,他们会被带到该实体的“编辑”页面。当他们单击“保存”时,我们希望他们返回到“列表”页面,但他们刚刚编辑的实体是可见的。我们已将每个实体放入一个 div 中,其唯一标识符为 id,因此我们需要处理实体更新的控制器将用户带到类似的位置;

www.example.com/entities/list#12345

其中 12345 是他们刚刚编辑的实体的 ID,也是包含“列表”页面上同一实体详细信息的 div 的 ID。

当然,我们可以只从路由器获取“列表”页面的 url,然后在末尾粘贴一个哈希和实体 id,但这似乎不太优雅。

【问题讨论】:

    标签: php symfony routes


    【解决方案1】:

    在 Symfony 3.2 中,您可以这样做:

    // generating a URL with a fragment (/settings#password)
    $this->get('router')->generate('user_settings', ['_fragment' => 'password']);
    

    查看https://symfony.com/blog/new-in-symfony-3-2-routing-improvements了解更多

    【讨论】:

      【解决方案2】:

      将哈希附加到 URL 的末尾是正确的方法。请记住,URL 哈希是纯粹的客户端功能。没有服务器端函数来处理或生成它们,因为服务器永远不需要处理它们。

      这是你通常只是放入视图中的东西:

      <a href="{{ path('my_list') }}#{{ my_entity.id }}">Link</a>
      

      【讨论】:

      • 谢谢。它看起来确实有点不雅,尤其是在控制器内完成时。但是,就像您说的那样,路由器将不知道在其路由到的页面上是否存在具有所需 ID 的 div。
      猜你喜欢
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2015-03-26
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多