崩盘砖家 2011-04-19 16:26:37 4994次浏览 10条回复 0 0 0

表单:

<form method="get" action="<?php echo Yii::app()->createAbsoluteUrl('search/key');?>" >
  <input type="text" name="searchKey" value="Search on" />
</form>

urlmanager在get模式下 form用get提交的时候,如果有参数不会自动附加么? 比如生成代码

<form method="get" action="http://192.168.1.254/www/www.eee.net/index.php?r=search/key" >
  <input type="text" name="searchKey" value="Search on" />
</form>

搜索时无法跳转到: http://192.168.1.254/www/www.eee.net/index.php?r=search/key&searchKey=搜索词 而是跳转到了 http://192.168.1.254/www/www.eee.net/index.php?searchKey= 搜索词 //而如果是path模式则正常搜索跳转

  • 回复于 2011-04-19 16:34 举报
    <?php 
    echo Yii::app()->createAbsoluteUrl('search/key');
    ?>
    

    你用Yii::app()->createUrl试试。

  • 回复于 2011-04-19 16:35 举报

    还是不行
    以前一直用url的path模式就没出现过这个问题

  • 回复于 2011-04-19 16:35 举报

    我也没出现过问题!

  • 回复于 2011-04-19 16:37 举报

    不是很明白......帮不了你

  • 回复于 2011-04-19 16:38 举报

    不可能,你按照我的写,如果用了url的get模式,肯定要出问题,我这里测试了两台机器都是

  • 回复于 2011-04-19 16:43 举报

    我知道原因了,刚看了源码
    对于form的get方式提交,如果在url中出现了queryString.
    应该使用CHtml::beginForm
    CHtml::beginForm对这种情况进行了特殊处理,将queryString转换为了form的hidden
    害我想了一下午

  • 回复于 2011-04-19 16:46 举报

    好深奥.......望砖家整理后向像广大小弟一样不是很明白得人分享!~多谢

  • 回复于 2011-04-19 16:52 举报

    也就是说对于get方式的表单提交
    如果提交的action中包含了queryString,应该将其处理为表单的hidden input
    例如:


    这样是提交不了的,因为提交到了index.php,不含querystring
    必须手动将action中的querystring处理为表单的hidden input
    而在yii中,CHtml::beginForm就是干这个事情的
  • 回复于 2011-04-21 17:26 举报

    原来是这个问题阿,index.php ?r =c/a 这个模式好像只能在beginForm里出现。。。

  • 回复于 2012-04-19 13:56 举报

    顶,非常有用,学习学习

您需要登录后才可以回复。登录 | 立即注册