在YII的模块中,使用<?php $this->widget('CCaptcha'); ?>无法加载进来验证码。

解决的方法是<?php $this->widget('CCaptcha', array('captchaAction'=>'/controllerName/captcha')); ?>

在controller中需要设置

public function actions()

{

return array(

'captcha'=>array(

'class'=>'CCaptchaAction',

'backColor'=>0xFFFFFF,

),

);

}

但是刷新验证码还有问题

考虑到少动框架的代码,所以自己写js.

<script type="text/javascript">

    $(function(){

        $('#yw0_button').click(function(event) {

        $.ajax({

            url: "/index.php/back/captcha/refresh/1",

            dataType: 'json',

            cache: false,

            success: function(data) {

                $('#yw0').attr('src', '/index.php'+data['url']);

                $('body').data('/back/captcha.hash', [data['hash1'], data['hash2']]);

            }

        });            

        return false;

        });

    })

</script>

根据分析,发现是刷新后的地址缺少/index.php,所以模仿widget生成的js来写。另外,js从页面下方开始执行,所以这行代码需要写在widget生成的js下面。我写在页面最下方。同时return false;必不可少。有类似exit或者阻止冒泡(但感觉好像不能算)的效果,即不让widget的js执行。