Działa
Teraz mam tylko problem z walidacją poprzez ajaxa. Mam coś takiego
controllers/SiteController.php:
public function actionContact()
{
$model=new ContactForm;
if(isset($_POST['ContactForm']))
{
$model->attributes=$_POST['ContactForm'];
if($model->validate())
{
$name='=?UTF-8?B?'.base64_encode($model->name).'?=';
$subject='=?UTF-8?B?'.base64_encode($model->subject).'?=';
$headers="From: $name <{$model->email}>\r\n".
"Reply-To: {$model->email}\r\n".
"MIME-Version: 1.0\r\n".
"Content-type: text/plain; charset=UTF-8";
mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers);
Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
$this->refresh();
}
}
$this->render('contact',array('model'=>$model));
}
views/contact.php:
<?php $this->title='Kontakt'; ?>
<?php $contact = new ContactForm(); ?>
<table cellspacing="0">
<tbody>
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'contact-form',
'enableAjaxValidation' => true,
'enableClientValidation'=>true,
'clientOptions'=>array(
'validateOnSubmit' => true,
'validateOnChange' => true,
'validateOnType' => true
),
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<tr>
<?php echo $form->labelEx($model,'name'); ?>
<?php echo $form->textField($model,'name'); ?>
<?php echo $form->error($model,'name'); ?>
</tr>
<tr>
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email'); ?>
<?php echo $form->error($model,'email'); ?>
</tr>
<tr>
<?php echo $form->labelEx($model,'subject'); ?>
<?php echo $form->textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?>
<?php echo $form->error($model,'subject'); ?>
</tr>
<tr>
<?php echo $form->labelEx($model,'body'); ?>
<?php echo $form->textArea($model,'body',array('rows'=>6, 'cols'=>50,'class'=>'textarea2')); ?>
<?php echo $form->error($model,'body'); ?>
</tr>
<?php if(CCaptcha::checkRequirements()): ?>
<tr>
<?php echo $form->labelEx($model,'verifyCode'); ?>
<div>
<?php $this->widget('CCaptcha'); ?>
<?php echo $form->textField($model,'verifyCode'); ?>
</div>
<div class="hint">Please enter the letters as they are shown in the image above.
<br/>Letters are not case-sensitive.</div>
<?php echo $form->error($model,'verifyCode'); ?>
</tr>
<?php endif; ?>
<tr>
<?php echo CHtml::submitButton('',array('class'=>'submit submit_okay')); ?>
</tr>
<?php $this->endWidget(); ?>
</tbody>
</table>
views/layout/main.php:
...
<?php Yii::app()->clientScript->registerCoreScript('jquery'); ?>
...
Jednak walidacja nie działa na bieżąco, lecz dopiero dopiero po submicie pokazuje błędy. Patrzyłem w konsole i nie ma tam żadnych zapytań. Jak to naprawić?