Разберем создание диалоговых окон yii на примере формы обратной связи.

class QuickForm extends CFormModel
{
    public $name;
    public $phone;
    public $timeToCall;
 
    public function rules()
    {
        return array(
            array('name, phone', 'required'),
            array('timeToCall', 'safe'),
        );
    }
 
    public function attributeLabels()
    {
        return array(
            'name'=>'Ваше имя',
            'phone'=>'Телефон',
            'timeToCall'=>'Время звонка',
        );
    }
}

2) Т.к. ссылка на форму видна на каждой странице сайта, в /views/layouts/main.php вставляем следующий код:

$this--->beginWidget('zii.widgets.jui.CJuiDialog', array(
                    'id' => 'mydialog',
                    'options' => array(
                        'title' => 'Отправить сообщение',
                        'autoOpen' => false,
                        'modal' => true,
                        'resizable'=> false
                    ),
                ));
                $qForm = new QuickForm;
 
                $form = $this->beginWidget('CActiveForm', array(
                            'id' => 'quick-form',
                            'enableClientValidation' => true,
                            'clientOptions' => array(
                                'validateOnSubmit' => true,
                            ),
                            'action' => array('site/quick'),
                        ));
                ?>
 
                    <!--?php echo $form--->errorSummary($qForm); ?>
 
                        <!--?php echo $form--->labelEx($qForm,'name'); ?>
                        <!--?php echo $form--->textField($qForm,'name', array('size'=>35)); ?>
                        <!--?php echo $form--->error($qForm,'name'); ?>
 
                        <!--?php echo $form--->labelEx($qForm,'phone'); ?>
                        <!--?php echo $form--->textField($qForm,'phone', array('size'=>35)); ?>
                        <!--?php echo $form--->error($qForm,'phone'); ?>
 
                        <!--?php echo $form--->labelEx($qForm,'timeToCall'); ?>
                        <!--?php echo $form--->textField($qForm,'timeToCall', array('size'=>35)); ?>
                        <!--?php echo $form--->error($qForm,'timeToCall'); ?>
 
 
                        <!--?php echo CHtml::submitButton('Отправить'); ?-->
 
                <!--?php
                $this--->endWidget();
                $this->endWidget('zii.widgets.jui.CJuiDialog');
                ?>`

3) экшен (site/quick):

public function actionQuick() {
        $model=new QuickForm;
            $model->attributes=$_POST['QuickForm'];
            if($model->validate()) {
                $headers="From: light-net@light-net.ru\r\nReply-To: light-net@light-net.ru";
                $body = "\n\nОтправитель: ".$model->name."\t Телефон: ".$model->phone."\t Время звонка: ".$model->timeToCall;
                mail(Yii::app()->params['adminEmail'],'ПЕРЕЗВОН!',$body,$headers);
            }
        $this->redirect(array('site/index'));
}

4) ссылкa на диалоговое окно:

<!--?php echo CHtml::link('Оставьте номер', '#', array('onclick' =--> '$("#mydialog").dialog("open"); return false;',)); ?>и мы Вам перезвоним!

Теперь при нажатии на ссылку появляется модальное окно, после ввода данных они передаются в экшен контроллера и отправляются нам на e-mail, и делается редирект на главную страницу.

Leave a Comment

Fields with * are required.

Please enter the letters as they are shown in the image above.
Letters are not case-sensitive.