Добрый день,
Есть такая проблема. Сделал Captcha для формы заказов аналогично как у контактов по умолчанию:
Модель:
class Orders extends ActiveRecord
{
public $verifyCode;
...
public function rules()
{
['verifyCode', 'captcha', 'captchaAction' => Url::to(['/orders/default/captcha']), 'when'=>function($model) {
return Yii::$app->user->isGuest;
}],
}
}
Контроллер:
namespace app\modules\orders\controllers\frontend;
...
class DefaultController extends Controller
{
public function actions()
{
return [
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
],
];
}
public function actionCreate()
{
$model = new Orders();
if ($model->load(Yii::$app->request->post())) {
$model->type = Orders::TYPE_PRODUCT;
if (!$model->validate()) {
/*My::printArr($this->model->printErrors());
die;*/
Yii::$app->session->addFlash('danger', $model->printErrors());
return $this->redirect([Yii::$app->request->referrer]);
}
if (!$model->save()) {
// тут вываливается ошибка:
//Array
//(
// [verifyCode] => Array
// (
// [0] => Неправильный проверочный код.
// )
//)
MyHelper::printArr($model->getErrors());
die();
Yii::$app->session->addFlash('danger', $model->printErrors());
}
else {
return $this->redirect(['view','id'=>$model->id]);
}
return $this->redirect(Url::home());
}
return $this->render('create', [
'model' => $model,
]);
}
}
Форма представления:
<?php $form = ActiveForm::begin([
'id'=>$model->formName(),
]); ?>
...
<?if(Yii::$app->user->isGuest):?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
'captchaAction' => Url::to(['/orders/default/captcha']),
'template' => '>{image}{input}',
]) ?>
<?endif;?>
<?= Html::submitButton(Yii::t('app', 'create'),) ?>
<?php ActiveForm::end(); ?>
При вводе в форму намеренного неправильного набора в форму капчи, красные буквы заботливо говорят, что у меня *
Неправильный проверочный код*, но после ввода правильного кода, я ловлю ошибку уже в контроллере после
$model->save()
Подскажите пожалуйста, в че может быть причина?