Закрыть iframe в colorbox после отправки формы - PullRequest
0 голосов
/ 31 января 2012

Я разрабатываю сайт, на котором при первом посещении пользователю будет предложено ввести адрес электронной почты и указать город, в котором он живет. Я загрузил его, используя colorbox и iframe. Вот код в main.php:

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

Итак, вы видите, colorbox отобразит страницу create.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'));
}

Но там написано, что "невозможно изменить уже отправленные заголовки ...". Как закрыть палитру цветов? Я попытался поместить «parent. $. Fn.colorbox.close ();» перед перенаправлением на другую страницу, но это не сработало. Где я должен положить $ .fn.colorbox.close ()? Я попробовал несколько методов в другом посте, но ни один не работает для меня. Спасибо

1 Ответ

0 голосов
/ 31 января 2012

ваша проблема в этой части.

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

Вы что-то выводите на экран и затем перенаправляете, это невозможно. То, что вы хотите сделать, это перенаправить, не повторяя ничего. После этого вам необходимо убедиться, что colorbox больше не открывается.

...