2

私はYiiで次のようなことを達成する必要があります:

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

フォームが送信されると、成功メッセージがユーザーの目の前に表示されます。このとき、メッセージは表示されていますが、ブラウザはトップに戻ります。

<?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'
                )); ?>

サイコロはありません。

ご意見をお聞かせください

4

3 に答える 3

5

actionの属性を使用しますCActiveForm。特定のニーズ'controller/acion'に対応します。

  <?php $form=$this->beginWidget('CActiveForm', array(
                        'id'=>'contact-form',
                        'enableClientValidation'=>true,
                        'action'=>array('controller/acion','#'=>'fragment-id')
                    )); ?>
于 2012-10-16T15:48:50.590 に答える
2

フォーム送信を受信するコントローラー/アクションで、フォームが処理されたら、目的のURLにリダイレクトするだけです。例えば:

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

あなたは本当の空想を得て、この短いjQueryスクロールを使って機能することさえできます:

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

どのgetはそのように呼ばれます:

goToByScroll("theIdIWantToGoTo");
于 2012-10-16T15:49:49.363 に答える
1

あなたは間違ったオプションを見ています。あなたがその行動を必要とするもの:

<?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現在要求されているURLのURLを生成するための空のパラメータ

于 2012-10-16T15:49:53.623 に答える