【问题标题】:Why does symfony link_to helper append .php to application name为什么 symfony link_to helper 将 .php 附加到应用程序名称
【发布时间】:2011-09-01 11:28:20
【问题描述】:

我有一个名为client 的symfony 1.4 应用程序,带有一个模块device。这是此应用程序中使用的routing.yml 文件的一部分:

device_detail:
  url: /device/:device_name
  param: { module: device, action: show }

device_manage:
  url: /manage/:device_name
  param: { module: device, action: manage }

我可以毫无问题地加载页面http://example.com/client/device/jdoe。此页面包含使用 link_to 帮助程序生成的链接。例如,

link_to("Manage this device",  "manage/{$device_name}")

生成 URL http://example.com/client.php/manage/jdoe。

我的问题是:为什么link_to 助手会生成一个包含字符串client.php 而不是简单的client 的URL?页面地址使用client 似乎很奇怪,但link_to 将其更改为client.php。

【问题讨论】:

  • 你使用哪个版本的 symfony?
  • 我使用的是 symfony 1.4。更新了问题以反映。

标签: symfony1 routing


【解决方案1】:

确保您已安装 HTACCESS 并在 Apache 中启用了 mod_rewite

【讨论】:

    【解决方案2】:

    在apps/<YOURAPP>/config/settings.yml 中检查您的应用程序的settings.yml 文件,并针对各自的环境相应地调整no_script_name 配置标志。之后清除缓存。通常,您的开发模式会将no_script_name 设置为false,而您的生产模式会将其设置为true。

    例子:

    prod:
      .settings:
        no_script_name: true
    
    dev:
      .settings:
        no_script_name: false
    

    编辑:正如 dxb 指出的那样,这也仅对项目中的单个应用程序有效。如果您希望将其应用于同一项目中有多个应用程序,则需要为路由应用前缀(例如/admin),使用不同的域/子域或类似的解决方案。

    【讨论】:

    • 是的,因此我的特定 apps/<YOURAPP>... 条目 :-)
    • 我尝试更改为您建议的settings.yml。它确实使“.php”消失了,但它也具有完全删除 URL 的应用程序部分的效果!将no_script_name 设置为true 我得到/manage/jdoe;将它设置为false 我得到/client.php/manage/jdoe。所以我决定选择link_to("Manage this device", "/client/manage/{$device_name}")。这似乎与 symfony 书第 9 章中的建议不一致,但这是我让它工作的唯一方法。
    • 我在 Ch9 中没有看到不一致的地方。相反,它列出了 4 个前端控制器文件,并讨论了配置您的 Web 服务器以选择要使用的前端控制器。如果 /client/* 的 URL 需要转到不同的前端控制器,那么您需要通过 .htaccess 和/或路由前缀或类似的方式进行调整。
    【解决方案3】:

    您可以在 settings.yml 中设置一个参数,以删除您的 url 的应用程序名称。
    产品:
    .settings
    no_script_name:关闭

    这仅适用于您项目中的一个应用。

    【讨论】:

    • 我不想从 URL 中删除应用程序名称,而是想删除“.php”部分。
    猜你喜欢
    • 2017-11-17
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    相关资源
    最近更新 更多