0

我在 Yii 工作,我只是一个初学者,正在努力学习这个框架,这就是我所困的地方:

我已经创建了一个用户模型和所需的表单,我正在尝试为它实现验证码:

这是我在用户模型中的验证规则:

$public verifyCode

public function rules()
    {
        // NOTE: you should only define rules for those attributes that
        // will receive user inputs.
        return array(
            array('username, password, email', 'required'),
            array('username','unique'),
            array('email','email'),
            array('verifyCode', 'captcha', 'allowEmpty'=>!CCaptcha::checkRequirements()),
            array('username, password', 'length', 'max'=>45),
            array('email', 'length', 'max'=>100),
            array('active', 'length', 'max'=>1),
            array('created_on, updated_on', 'safe'),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('id, username, password, email, created_on, updated_on, active', 'safe', 'on'=>'search'),
        );
    }

这是我在 userController 中覆盖的 action() :

public function actions(){
        return array(
        'captcha'=>array(
            'class' => 'CCaptchaAction',
            )
            );
    }

这是我的视图文件:

<?php if(CCaptcha::checkRequirements()): ?>
    <div class="row">
        <?php echo $form->labelEx($model,'verifyCode'); ?>
        <div>
        <?php $this->widget('CCaptcha'); ?>
        <?php echo $form->textField($model,'verifyCode'); ?>
        </div>
        <div class="hint">Please enter the letters as they are shown in the image above.
        <br/>Letters are not case-sensitive.</div>
        <?php echo $form->error($model,'verifyCode'); ?>
    </div>
    <?php endif; ?>

据我说,我认为我做的一切都是正确的,但是验证码图像没有生成。哦,是的,GD 库已安装,如果我导航到站点/联系人,则验证码生成良好。

我似乎不明白,我在哪里弄错了。

这是我看到的:

在此处输入图像描述

表格似乎工作正常,但是我看不到验证码图像。

任何帮助,将不胜感激。

问候,

4

1 回答 1

1

我得到了答案,这是因为控制器中定义的访问规则,我不得不像这样修改控制器 accessControl:

public function accessRules()
    {
        return array(
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view','captcha'),
                'users'=>array('*'),
            ),
            array('allow', // allow authenticated user to perform every action
                'actions'=>array('create','update','admin','delete'),
                'users'=>array('@'),
            ),

            array('deny',  // deny all users
                'users'=>array('*'),
            ),
        );
    }
于 2013-05-19T18:59:37.640 回答