1 заметка с тегом

captcha

Асинхронно обновить captcha в Yii2

Столкнулся с тем, что в Yii2 кнопки для обновления captcha в ajax нет.
Начинаем делать правильно и своими силами:
Сделаем кнопку во view

$form->field($registration, 'captcha')->widget(Captcha::className(), [
	'template' => '<a href="javascript:void(0);" id="fox"></a>
		<div>{image}</div>{input}',
	'options' => [
		'placeholder'=>'Введите буквы с картинки'
	],
]);

и «повесим» на эту кнопку js-код:

$(document.body).on('click', '#fox', function(e) {
	$.ajax({
		type: 'GET',
		url: '/site/captcha',
		data: {refresh: 1},
		success: function (data) {
			$("img[id$='-captcha-image']").attr('src', data.url);
		}
	});
});

Форму будем валидировать так:

namespace models\form;

use Yii;
use yii\base\Model;

class Registration extends Model
{
...
	public function rules()
	{
		return [
			[['username', 'captcha', 'password'], 'required'],
			['username', 'email', 'message' => '{attribute} введен некорректно!'],
			
			['captcha', 'captcha', 'captchaAction' => 'site/captcha'],
			['username', 'validateEmail'],
		];
	}
...
}
2015   ajax   captcha   validate   yii2   асинхронно