使用app.yml在Symfony 1.4中设置根网址

时间:2011-09-27 01:22:00

标签: php symfony1

好吧,所以这个问题或多或少地质疑这个设计决策在一个symfony项目中是多么聪明,而不是一个让某些东西运转起来的问题。

我最近决定表格的同事应该使用此操作在网站上发布某些数据:

<form action="http://<?php echo sfConfig::get( 'app_webroot' ) ?>" method="post" name="userCity" id="userCity">

这只是将用户选择的城市发布到网站的索引控制器,以更新会话中的城市。

在web目录中的index.php中,我们有这一行:

$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'webrootrule', false);

webrootrule是app.yml中的规则集。目的是确保表单发布到正确的域,所以在我的开发环境中,我将index.php中的webroot选项设置为我的环境,他将其设置为他的环境,并将prod设置为网站的生产域名。以下是不同的webroot路径:

echopony.website.internalsite.com
coworker.website.internalsite.com
website.com

从不需要做这样的事情。在我没有使用index.php和测试所有表格的情况下转移太多时间来完成这项工作之前,我只是想从你们中的一些人那里反省一下,看看这是否真的浪费了我们的努力。

更糟糕的是,index.php现在由他版本化。我不同意对该文件进行版本控制,但不是外表谴责他的方法,而是我绝对肯定他确实做错了。在发布站点更新之前必须编辑index.php似乎很荒谬。你知道,为了避免index.php将webroot设置为echopony.website.internalsite.com

他在我身上有多年的经验,所以当我不同意他的方法时......我必须确保自己在采取行动之前做对了。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:1)

您应该在这里使用绝对URL。只需使用Symfony的url_for助手即可。这个助手是工作环境依赖,如果你愿意,可以生成绝对URL。

<form action="http://<?php echo url_for('/', true) ;?>" method="post" name="userCity" id="userCity">

帮助程序的第二个参数负责创建绝对URL(true)或不创建(false)

查看official documentation了解更多信息