Yii - 如何提交表单并将用户发送到给定的锚点?

时间:2012-10-16 15:25:12

标签: php yii

我需要在Yii中实现这样的目标:

<form action="somescript.php#fragment-id">

表单获取后,成功消息应出现在用户眼前。 此时,消息显示为BUT,浏览器返回到顶部。

<?php $form=$this->beginWidget('CActiveForm', array(
                    'id'=>'contact-form',
                    'enableClientValidation'=>true,
                )); ?>

  //form here
  <?php echo CHtml::submitButton('send')); ?>

<?php $this->endWidget(); ?>

我在这里看到一些名为actionPrefix的内容,但它似乎来自另一个类:

CWidget

http://www.yiiframework.com/doc/api/1.1/CActiveForm

我试图像这样添加actionPrefix

<?php $form=$this->beginWidget('CActiveForm', array(
                    'id'=>'contact-form',
                    'enableClientValidation'=>true,
                    'actionPrefix'=>'fragment-id'
                )); ?>

没有骰子。

请咨询

3 个答案:

答案 0 :(得分:5)

使用action的{​​{1}}属性。根据您的特定需求替换CActiveForm

'controller/acion'

答案 1 :(得分:2)

在接收表单提交的控制器/操作中,处理完表单后,只需重定向到所需的URL即可。例如:

$this->redirect(Yii::app()->request->baseUrl."/myurl#fragment-id");

你甚至可以得到真正的幻想并使用这个简短的jQuery滚动来运行:

function goToByScroll(id){
    $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
}

这样被称为:

goToByScroll("theIdIWantToGoTo");

答案 2 :(得分:1)

您正在查看错误的选项。你需要什么action

<?php $form=$this->beginWidget('CActiveForm', array(
                    'id'=>'contact-form',
                    'action'=>$this->createUrl('')."#fragment-id",
                    'enableClientValidation'=>true,
                )); ?>

  //form here
  <?php echo CHtml::submitButton('send')); ?>

<?php $this->endWidget(); ?>

createUrl的空参数为其生成当前请求的网址的网址