2012-01-31 13 views
0

私は最初に訪問したときに、メールを入力し、どの都市に住んでいるかを入力するサイトを開発しています。私はcolorboxとiframeを使ってそれを読み込んだ。フォームを送信した後、カラーボックスでiframeを閉じる

Yii::app()->clientScript->registerScript('', 
       "$('document').ready(
        function() 
        { 
          $.fn.colorbox({href:'http://www.veevou.com/visitor/create', 
          iframe:true,'width':'365px', 'height':'510px', onClosed:function(){ location.reload(true); }});         
        } 
       )"); 

       $colorbox = $this->widget('application.extensions.colorpowered.ColorBox'); 
       $colorbox 
        ->addInstance('.colorbox', array('maxHeight'=>'80%', 'maxWidth'=>'80%')); 

だから、あなたが見る、ページcreate.phpをレンダリングすると、フォームが送信された後、コントローラは、データが保存されますカラーボックスは、インデックスページにリダイレクト:ここでmain.phpのコードがあります。

これはコントローラです:

if(isset($_POST['Visitor'])) 
{ 
     $model->attributes=$_POST['Visitor']; 

       // Register only if he/she is not registered as member nor visitor 
       if($model->save()) 
       { 
       echo "<script>parent.$.fn.colorbox.close(); </script>"; 
       $this->redirect(array('site/index')); 
       } 

} 
else 
{ 
     $this->render('form',compact('model')); 
} 

しかし、それは "すでに送信ヘッダを変更することはできません..." と言います。 colorboxを閉じるには?別のページにリダイレクトする前に、 "parent。$。fn.colorbox.close();"を入れようとしましたが、動作しませんでした。 $ .fn.colorbox.close()をどこに置くべきですか?私は別の投稿でいくつかの方法を試しましたが、私のためにはうまくいきません。ありがとう

答えて

0

あなたの問題はこの部分です。

echo "<script>parent.$.fn.colorbox.close(); </script>"; 
$this->redirect(array('site/index')); 

画面に何かを表示してリダイレクトすると、これはできません。あなたがしたいことは、何もエコーすることなくリダイレ​​クトすることです。その後、カラーボックスが再び開かないようにする必要があります。

+0

フィードバックのTks。 colorboxが再び開かないようにするには?コントローラはページをindex.phpにリダイレクトし、 "echo" ";" index.phpの上部にありますが、ページはまだカラーボックスの中に表示されています –

+0

解決するために管理しました。私はエコーを使用します

関連する問題