首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony 1.4错误的URL路由

Symfony 1.4错误的URL路由
EN

Stack Overflow用户
提问于 2012-05-04 17:50:43
回答 2查看 529关注 0票数 0

我定义了一些类似于"action = 'module/action'“& submit的操作。结果是'currentUrl/module/action‘而不是'module/action',我不知道为什么,代码如下:

在前面:

代码语言:javascript
复制
<a href="<?php echo ( isset($disabledMajSuivi) && $disabledMajSuivi ? "#" : "javascript:showYesNoDialog('". addslashes(__('enquete.visu.msg.confirmation.majsuivi')). "', 'majSuivi')" ); ?>" >
    <?php echo __('enquete.visu.majsuivi');?>
</a>

showYesNoDialog是一个javascript函数,其中第一个arg是显示的句子,第二个arg是回调函数,因此'majSuivi‘被回调,如下所示:

代码语言:javascript
复制
<script>
function majSuivi(response) {
    if(response == 'yes') {
        document.forms[0].action = "module_name/majsuivi";
        document.forms[0].submit();
    }
}

已调试,条件为true

动作'majSuivi‘(很大)的结尾是这样的:

代码语言:javascript
复制
    $this->redirect('enquete/visu?enq_id='.$enq_id
        . (!is_null($personneMorale) ? '&pm_id='.$personneMorale->getPmId() : '') );

但是由于url错误而没有执行任何操作(所以实际上这部分代码是无用的)。

所以当URL应该是:http://[baseUrl]/index.php/module_name/majsuivi

而是:http://[baseUrl]/index.php/enquete/visu/enq_id/24/menu_id/module_name/majsuivi,其中/index.php/enquete/visu/enq_id/24/menu_id/是调用'majSuivi操作之前的当前url。每次我点击"a href“按钮,它都会将"module_name”添加到URL中,如下所示:

单击-> http://[baseUrl]/index.php/enquete/visu/enq_id/24/menu_id/module_name/majsuivi

click2 -> http://[baseUrl]/index.php/enquete/visu/enq_id/24/menu_id/module_name/module_name/majsuivi

click3 -> http://[baseUrl]/index.php/enquete/visu/enq_id/24/menu_id/module_name/module_name/module_name/majsuivi

等等。

我不认为它来自routing.yml配置文件,但如果有人认为它可以,我会写它的内容。

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-04 21:34:14

你应该使用类似这样的东西:

代码语言:javascript
复制
document.forms[0].action = "<?php echo url_for('module_name/majsuivi')?>";

代码语言:javascript
复制
document.forms[0].action = "/index.php/module_name/majsuivi";

或者如果您的routing.yml中有此路由

代码语言:javascript
复制
document.forms[0].action = "<?php echo url_for('@your_route_name_from_yaml')?>";

因为'module_name/majsuivi'是一个相对路径,它将与当前的url连接在一起,但开头没有/

票数 1
EN

Stack Overflow用户

发布于 2012-05-21 22:47:46

非常感谢,这些都是非常有用的信息,特别是我认为的第三个选择。实际上,在部署之前,我有不同的服务器可供测试。我观察到了两种行为。

Behavior 1:在我测试过的所有解决方案中,只有document.forms[0].action = "/module_name/majsuivi";可以正常工作。

Behavior 2:在我测试过的所有解决方案中,没有一个是有效的。

我深入研究了不同测试服务器的php版本,但将两个服务器放在相同的PHP和Apache版本下并不会使它们在这个问题上有相同的行为。

由于部署环境具有行为1,我现在通过使用以下javascript解决了这个问题:document.forms[0].action = "/module_name/majsuivi";

我之前解释的所有内容都在我的本地服务器上,这与行为1相匹配。

我已经测试了first option:document.forms.action = "";,它在任何服务器上都不起作用。

的第二个one给了我http://[baseUrl]/index.php/enquete/visu/enq_id/24/index.php/module_name/majsuivi,然后它就不能工作了,我确信如果它在本地服务器上不能工作,它在其他服务器上也不能工作。

我还没有测试third solution,因为我现在已经解决了我的问题,但它看起来是一个有效的解决方案,我认为它应该可以工作。如果我用了它,我会更新的。

致谢和问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10446527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档