Class yii\captcha\Captcha

继承yii\captcha\Captcha » yii\widgets\InputWidget » yii\base\Widget » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/captcha/Captcha.php

Captcha 渲染一个验证码(CAPTCHA)图像和一个用于用户输入验证码的输入字段.

Captcha 与 yii\captcha\CaptchaAction 一起使用来提供 CAPTCHA|验证码 - 一种防止网站垃圾邮件的方法.

Captcha 渲染的图像元素(img)将显示由 $captchaAction 指定的动作路由所生成的验证码(CAPTCHA)图像. 此动作必须是 yii\captcha\CaptchaAction 的实例.

当用户点击验证码(CAPTCHA)图像时, 将使用新的验证码(CAPTCHA)刷新验证码(CAPTCHA)图像.

你可以使用 yii\captcha\CaptchaValidator 来验证用户输入是否与当前的 CAPTCHA 验证码相符.

以下示例显示如何将此小部件与模型属性一起使用:

echo Captcha::widget([
    'model' => $model,
    'attribute' => 'captcha',
]);

以下示例将使用name属性代替:

echo Captcha::widget([
    'name' => 'captcha',
]);

你也可以使用 widget() 方法在 ActiveForm 中使用此小部件, 例如:

<?= $form->field($model, 'captcha')->widget(\yii\captcha\Captcha::classname(), [
    // 在此配置小部件的其它属性
]) ?>

使用验证码(CAPTCHA)涉及以下步骤:

  1. 重写 yii\web\Controller::actions() 并注册一个ID为captcha的 CaptchaAction 类的动作;
  2. 在表单模型中, 声明一个属性来存储用户输入的验证码, 并声明将由captcha验证器验证其值.
  3. 在控制器视图的表单中插入 yii\captcha\Captcha 小部件.

示例:

// Controller:
public function actions()
{
    return [
        'captcha' => [
            'class' => 'yii\captcha\CaptchaAction',
            'width' => 80,   // 图像宽度
            'height' => 34,  // 图像高度
        ],
    ];
}

// Model:
class LoginForm extends Model
{
    public $captcha;

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

// View:
echo $form->field($model, 'captcha')->widget(yii\captcha\Captcha::className(), [
    'captchaAction' => 'site/captcha',
    'imageOptions' => ['alt' => '点击换图', 'title' => '点击换图', 'class' => 'captcha'],
    'options' => ['class' => 'form-control', 'style' => 'width:80px;']
]);

公共属性

隐藏继承的属性

属性类型描述定义在
$attribute string 与此小部件关联的模型属性. yii\widgets\InputWidget
$autoIdPrefix string 自动生成的小部件 ID 的前缀. yii\base\Widget
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$captchaAction string|array 生成验证码(CAPTCHA)图像的动作路由. yii\captcha\Captcha
$counter integer 用于为小部件生成 $id 的计数器. yii\base\Widget
$field yii\widgets\ActiveField 活动的输入字段, 它会触发该小部件的渲染. yii\widgets\InputWidget
$id string|null 小部件的 ID. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getId()setId(). yii\base\Widget
$imageOptions array 要应用于验证码(CAPTCHA)图像标签(img)的 HTML 属性. yii\captcha\Captcha
$model yii\base\Model 与此小部件关联的数据模型. yii\widgets\InputWidget
$name string 输入域名称(input标签的name值). yii\widgets\InputWidget
$options array 输入标签(input)的 HTML 属性. yii\captcha\Captcha
$stack yii\base\Widget[] 当前正在渲染的小部件(未结束). yii\base\Widget
$template string 用于排序验证码(CAPTCHA)图像标签(img)和文本输入标签(input)的模板. yii\captcha\Captcha
$value string 输入值(input标签的value值). yii\widgets\InputWidget
$view yii\web\View 可用于渲染视图或视图文件的视图对象. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getView()setView(). yii\base\Widget
$viewPath string 包含此小部件的视图文件的目录. 该属性是只读的. yii\base\Widget

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
afterRun() 在执行小部件后立即调用该方法. yii\base\Widget
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeRun() 在执行小部件之前立即调用该方法. yii\base\Widget
begin() 开始一个小部件. yii\base\Widget
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
checkRequirements() 检查是否有可用于生成验证码(CAPTCHA)图像的图形扩展. yii\captcha\Captcha
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
end() 结束小部件. yii\base\Widget
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getId() 返回小部件的 ID. yii\base\Widget
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Widget
getViewPath() 返回包含此小部件的视图文件的目录. yii\base\Widget
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化小部件. yii\captcha\Captcha
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
registerClientScript() 注册所需的 JavaScript. yii\captcha\Captcha
render() 渲染视图. yii\base\Widget
renderFile() 渲染视图文件. yii\base\Widget
run() 渲染小部件. yii\captcha\Captcha
setId() 设置小部件的 ID. yii\base\Widget
setView() 设置此小部件要使用的视图对象. yii\base\Widget
trigger() 触发事件. yii\base\Component
widget() 创建一个小部件实例并运行它. yii\base\Widget

受保护的方法

隐藏继承的方法

方法描述定义在
getClientOptions() 返回验证码 JS 小部件的选项. yii\captcha\Captcha
hasModel() yii\widgets\InputWidget
renderInputHtml() 渲染 HTML 输入标签(input). yii\widgets\InputWidget

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_RUN yii\base\WidgetEvent 在执行小部件之后立即触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent 在执行小部件之前触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_INIT yii\base\Event 当通过 init() 初始化小部件时触发的事件. (available since version 2.0.11) yii\base\Widget

属性详情

$captchaAction public 属性

生成验证码(CAPTCHA)图像的动作路由.

该路由所表示的动作必须是 yii\captcha\CaptchaAction 的动作.

有关可接受的格式, 请参阅 yii\helpers\Url::toRoute().

public string|array $captchaAction 'site/captcha'
$imageOptions public 属性

要应用于验证码(CAPTCHA)图像标签(img)的 HTML 属性.

参见 yii\helpers\Html::renderTagAttributes() 有关如何渲染属性的详细信息.

public array $imageOptions = []
$options public 属性

输入标签(input)的 HTML 属性.

参见 yii\helpers\Html::renderTagAttributes() 有关如何渲染属性的详细信息.

public array $options = ['class' => 'form-control']
$template public 属性

用于排序验证码(CAPTCHA)图像标签(img)和文本输入标签(input)的模板.

在此模板中, 标记{image}将被替换为实际的图像标签(img), 而{input}将被替换为文本输入标签(input).

public string $template '{image} {input}'

方法详情

checkRequirements() public static 方法

检查是否有可用于生成验证码(CAPTCHA)图像的图形扩展.

此方法将检查 ImageMagick 和 GD 扩展的存在.

public static string checkRequirements ( )
return string

图形扩展的名称, imagickgd.

throws yii\base\InvalidConfigException

如果 ImageMagick 和 GD 都没有安装.

getClientOptions() protected 方法

返回验证码 JS 小部件的选项.

protected array getClientOptions ( )
return array

选项列表.

init() public 方法

初始化小部件.

public void init ( )
registerClientScript() public 方法

注册所需的 JavaScript.

public void registerClientScript ( )
run() public 方法

渲染小部件.

public void run ( )