我需要在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'
)); ?>
没有骰子。
请咨询
答案 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
的空参数为其生成当前请求的网址的网址