تالار گفتمان nCIS.ir

نسخه‌ی کامل: خطا در Captcha (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.

در موقع validate فرم، برا فیلد verifyCode خطا میده.
با print_r مقدار وارد شده verifyCode رو دریافت میکنم که مقدار درسته اما خطا میده.

$form->field($order, 'verifyCode')->widget(Captcha::className(),['template' => $template_captcha])

public function rules()
{
   return [
       [['verifyCode'], 'captcha'],
   ];
}

public function actions()
{
   return [
       'error' => [
            'class' => 'yiiwebErrorAction',
        ],
       'captcha' => [
            'class' => 'yiicaptchaCaptchaAction',
            'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            'fontFile' => Yii::$app->basePath.'/web/fonts/captcha.ttf',
            'maxLength' => 5,
            'minLength'=>5'     
            'width' => 100,
        ],
   ];
}

لطفا راهنمایی کنید.

متشکرم.
خط fixedVerifyCode رو حذف کنید ببینید درست میشه؟
توی این صفحه نوشته بود rule رو باید ایطوری تعریف کنید:

[['verifyCode'], 'captcha', 'captchaAction' => 'Controller-name/captcha'],

و این:

$form->field($order, 'verifyCode')
   ->widget(Captcha::className(),
           [
                'template' => $template_captcha,
                'captchaAction' => 'Controller-name/captcha',
            ])

اینم نوشتم ولی کار نکرد.
بجای Controller-name اسم کنترلر خودتون رو بگذارین.
یه نگاه به فرم تماس پروژه Skeleton بندازین ببینید چطور کار میکنه.
rule رو بصورت زیر تعریف کردم:
[['verifyCode'], 'captcha', 'captchaAction' => 'orders/userinformation'],

حالا یه خطای دیگه میده:

نقل قول:

Exception 'yiibaseUnknownMethodException' with message 'Calling unknown method: yiibaseInlineAction::getVerifyCode()'

in C:wampwwwshoppingvendoryiisoftyii2baseComponent.php:285


skeleton کجای پروژه است؟
منظورم پروژه پیشفرض هست
ضمناً فقط اسم کنترلر رو عوض کنید توی رول. اکشن همون captcha باید باقی بمونه.
درسته rule رو بصورت controller-name/captcha نوشتم خطای زیر حل شد:

نقل قول:

Exception 'yiibaseUnknownMethodException' with message 'Calling unknown method: yiibaseInlineAction::getVerifyCode()'

in C:wampwwwshoppingvendoryiisoftyii2baseComponent.php:285

اما همچنان به خود verifyCode خطا میده.
در واقع برگشتم سر جای اولم.
در ویوی مربوط به کنترلر کد زیر رو نوشتم:

$form->field($order, 'verifyCode')->widget(Captcha::className(),[
    'captchaAction' => 'orders/captcha',
    'template' => $template_captcha,
])

مشکل کاملا حل شد.


خیلی ممنون استاد.