【问题标题】:Yii CAPTCHA url is brokenYii CAPTCHA 网址坏了
【发布时间】:2012-06-26 11:50:28
【问题描述】:

我想在我的 Yii 项目上创建一个 AJAX 注册表单。所以在每个页面上我都有一个登录按钮,如果用户没有被授权,它会显示一个弹出窗口。在该弹出窗口中,他可以看到带有电子邮件字段、密码字段和验证码(默认 Yii 验证码)的注册表单。

所以,我的用户注册模型是用户。有一个验证规则:

array('code', 'captcha', 'allowEmpty'=>!Yii::app()->user->isGuest),

我的控制器,所有用户的操作都在其中,是用户(url:site.url/user/),我在那里添加了验证码操作:

'captcha'=>array(
    'class'=>'CCaptchaAction',
    'backColor'=>0xFFFFFF,
    'foreColor'=>0x000000,
),

在我的下一个代码中:

$this->widget('CCaptcha', array(
    'clickableImage'    => true,
    'showRefreshButton' => false,
))

这里有一个问题:(在弹出窗口中,可以在每个页面上显示(例如索引页面,属于主控制器)验证码想要从该控制器加载图像(来自/main/captcha,不是/user/captcha)。

在每个控制器中添加验证码是个坏主意,所以我添加了

'captchaAction' => '/user/captcha',

但是在那之后验证码想要从一个 url 加载

http://site.loc/user/captcha/v/4fe99aca1bbed

用户友好的 url 的验证码崩溃了,我无法避免(我认为,不是 yii 专家,这是因为常见的路径配置)。

有没有简单的解决方案来解决这个问题?我应该修复 URL 还是重新配置 CAPTCHA?

【问题讨论】:

    标签: yii captcha


    【解决方案1】:

    所以,在等待帮助的时候,我自己解决了这个问题 :) 在我的项目中,我将控制器分为下一个层次结构:

    /frontend
    /backend
    

    所有普通用户的控制器(当然)都在前端部分,包括 UserController 和 MainController。

    是的,我写了一些配置来隐藏 URL 中的 /frontend/,如下所示:

    '<c:\w+>/<a:\w+>' => 'frontend/<c>/<a>',
    

    我确信,我的 CAPTCHA 配置中的那个字符串 ('captchaAction' => '/user/captcha') 知道去哪里(几乎就是这样!),但是不!

    我应该将完整路径写入我的控制器并执行如下操作:

    'captchaAction' => '/frontend/main/captcha',
    

    正如我所说的,我将 CAPTCHA 操作放在 UserController 中,但现在您可以看到它位于 MainController(我从 UserController 中删除了它)

    我得到了一个错误:

    CCaptchaValidator.action "captcha" is invalid. Unable to find such an action in the current controller. 
    

    所以,为了解决这个问题,我只需要在我的用户 MODEL 中使用 CCaptchaValidator 的属性captchaAction!代码:

    array('code', 'captcha', 'captchaAction'=>'/frontend/main/captcha', 'allowEmpty'=>!Yii::app()->user->isGuest)
    

    所以,现在我的 AJAX Captcha 验证可以在我想要的地方正常工作。

    祝 Yii 的默认验证码好运,亲爱的社区!

    【讨论】:

    • 我需要等几个小时,然后我会去做
    • pfff,对验证码进行了许多更改。有人可以帮我解决这个问题吗?stackoverflow.com/questions/28325213/yii-captcha-validation-check-does-not-work
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2011-07-24
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多