Yii2 Неверный идентификатор действия CAPTCHA в модуле

Я получаю исключение «Недопустимый идентификатор действия CAPTCHA» в своем пользовательском модуле contactus. Мне удалось отобразить капчу, но правило проверки моделей выдает исключение с недопустимым идентификатором действия. Ниже мой код:

контактус/контроллеры/DefaultController.php

class DefaultController extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['captcha','index'],
                        'allow' => true,
                    ],
                ]
            ]
        ];
    }

    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

    public function actionIndex()
    {
        $model = new ContactForm();
        if ($model->load(Yii::$app->request->post()) && $model->contact(setting::ADMIN_EMAIL_ADDRESS)) {
            Yii::$app->session->setFlash('contactFormSubmitted');

            return $this->refresh();
        } else {
            return $this->render('index', [
                'model' => $model,
            ]);
        }
    }
}

контактус/модели/ContactForm.php

public function rules()
{
    return [
        // name, email, subject and body are required
        [['name', 'email', 'subject', 'body','verifyCode'], 'required'],
        // email has to be a valid email address
        ['email', 'email'],
        // verifyCode needs to be entered correctly
        ['verifyCode', 'captcha','captchaAction'=>'default/captcha'],
    ];
}

контакты/представления/по умолчанию/index.php

 <?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
            <?= $form->field($model, 'name') ?>
            <?= $form->field($model, 'email') ?>
            <?= $form->field($model, 'subject') ?>
            <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
            <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
                'captchaAction' => 'default/captcha',
                'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
            ]) ?>
            <div class="form-group">
                <?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
            </div>
 <?php ActiveForm::end(); ?>

Я получаю следующую ошибку:

Exception (Invalid Configuration) 'yii\base\InvalidConfigException' with message 'Invalid CAPTCHA action ID: default/captcha'in E:\wamp\www\yii-application\vendor\yiisoft\yii2\captcha\CaptchaValidator.php:81

Я что-то упускаю?


person Chinmay Waghmare    schedule 13.02.2015    source источник


Ответы (1)


Вы должны изменить правило проверки:

['verifyCode', 'captcha','captchaAction'=>'/contactus/default/captcha'],
person soju    schedule 13.02.2015