Приветствую.
С недавних пор боты стали постить спам в комменты.
Решил закрыться о них каптчей.
Однако, что-то не заработало у меня, вот и прошу помощи.
Формочка добавления комментов показыватся во views/posts/show.php
или другими словами, когда показывается конкретный пост (posts/show) ниже рисуется формочка.
Рисуется так:
<?php $this->renderPartial('/comments/_form',array(
'model'=>$newComment,
'update'=>false,
)); ?>
В comments/_form.php такое:
<?php $this->widget('CCaptcha', array('buttonLabel' => '<br>[new code]')); ?>
<?php echo CHtml::activeTextField($model,'verifyCode'); ?>
в Comments Model добавил
public function rules()
{
return array(
//..
array('verifyCode', 'captcha', 'allowEmpty' => false, 'on' => 'create'),
);
}
В Comments Controller добавил:
public function actions()
{
return array(
// Создаем экшин captcha.
'captcha'=>array(
'class'=>'CCaptchaAction',
'backColor'=> 0x003300,
'maxLength'=> 3,
'minLength'=> 3,
'foreColor'=> 0x66FF66,
),
);
}
public function accessRules()
{
return array(
array('allow',
'actions'=>array('list','show', 'create', 'captcha'),
'users'=>array('*'),
),
//....
В итоге, при просмотре поста каптча даже не отображается.
Потому что сгенерированный путь к картинке ведет как: posts/captcha
Это логично, потому что мы же внутри экшена posts/show.
А как все-таки реализовать задуманное, комменты к посту с каптчей?