Разберем создание диалоговых окон 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