Здравствуйте, как сделать валидацию файла с помощью ajax? При нажатии кнопки submit переходит на страницу /audio/create и там валидация работает, но валидация должна быть через ajax
Контроллер
public function actionCreate()
{
$model = new Audio;
$uid = Yii::app()->user->id;
if (!isset($model)) throw new CHttpException(404);
$model->song = CUploadedFile::getInstance($model, 'song');
$model->cover = CUploadedFile::getInstance($model, 'cover');
if (isset($_POST['ajax']) && $_POST['ajax'] === 'audio-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
Правило в модели
array('cover, song', 'required'),
array(
'cover',
'file',
'types' => 'jpg, gif, png, jpeg',
'allowEmpty' => false
),
array(
'song',
'file',
'types' => 'mp3',
'maxSize' => 1024 * 1024 * 50,
'tooLarge' => 'The file was larger than 50MB. Please upload a smaller file.',
'allowEmpty' => false
),
Форма
<?php
$form = $this->beginWidget('CActiveForm',array(
'id'=>'audio-form',
'action'=>CHtml::normalizeUrl(array("audio/Create")),
'enableAjaxValidation'=>true,
'enableClientValidation'=>false,
'clientOptions'=>array(
'validateOnSubmit'=>true,
'validateOnChange'=>false,
),
'htmlOptions' => array('enctype'=>'multipart/form-data'),
));
echo $form->error($audio,'song');
echo $form->error($audio,'cover'); ?>
<div class="left-files-input">
<div class="song-input">
<?php echo $form->fileField($audio, 'song', $htmlOptions=array('id'=>'audioinput', 'accept' => 'audio/mp3')); ?>
</div>
<div class="cover-input">
<?php echo $form->fileField($audio, 'cover', $htmlOptions=array('id'=>'coverinput', 'accept' => 'image/jpeg,image/png')); ?>
</div>
</div>
<?php $this->endWidget(); ?>