2012-08-10 10 views
6

Tengo un formulario de registro de usuario, en el que estoy tratando de mostrar una imagen Captcha usando Yii widget de CCaptcha, sin embargo, mi vínculo de la imagen aparece roto, archivo de controlador:
CCaptcha mostrar ninguna yü imagen

public function actions() 
    { 
     return array(
      // captcha action renders the CAPTCHA image displayed on the contact page 
      'captcha'=>array(
       'class'=>'CCaptchaAction', 
       'backColor'=>0xFFFFFF, 
      ), 
     ); 
    } 

archivo modelo:

public function rules() 
{ 
    return array(array('verifyCode','captcha','allowEmpty'=>!CCaptcha::checkRequirements(),'on'=>'insert'), 
); 
} 

Y vista de archivo:

<?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 shown. 
     <br/>Letters are not case-sensitive.</div> 
     <?php echo $form->error($model,'verifyCode'); ?> 
    </div> 
    <?php endif; ?> 

Como respuesta proporcionada en algún lugar que también trató de dar las reglas de acceso en mi archivo de controlador como

public function accessRules() 
{ 
    return array(
     array('allow', 
     'actions' => array('captcha'), 
     'users' => array('*'), 
     ), 
    ); 
} 

Pero nada parece estar funcionando.

+0

He probado su código y no hubo ningún error! Solo agregué esto 'on' => 'insert' pero apareció la imagen del captcha! – SoldierCorp

+0

He escrito 'on' => 'insert' también en mi clase de modelo. pero no hubo suerte allí. La herramienta yiic que genera el captcha de la aplicación es visible, lo que significa que hay algo, me falta o que no se escribe correctamente. –

Respuesta

8

El problema fue con el archivo de controlador, que debería haber sido,

public function accessRules() 
    { 
     return array(
      array('allow', 
       'actions'=>array('create', 'captcha'), 
       'users'=>array('*'), 
      ), 
    } 


mientras que yo había mencionado el recurso de código de imagen al final, lo que me di cuenta de que no está permitido en Yii. Todas las acciones permitidas para * deben estar juntas.

-1

Yii captcha creará una imagen png. Una posible explicación de la relación imagen rota sería una extensión GD falta o extensión imagick, que puede ser identificado por la presencia del siguiente texto en su error.log:

llamada a imagecreatetruecolor función no definida

Para detalles y solución, vea "call to undefined function imagecreatetruecolor" error in PHP & pChart