关于 yii 验证码显示, 但点击不能刷新的处理

先说说 render 与 renderPartial, 各位看官, 先别走, 我没跑题, 这个问题如果需要解决, 关键就在 render 与 renderPartial 的区别.

renderPartial() 方法


public string renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)
$view string name of the view to be rendered. See getViewFile for details about how the view script is resolved.
$data array data to be extracted into PHP variables and made available to the view script
$return boolean whether the rendering result should be returned instead of being displayed to end users
$processOutput boolean whether the rendering result should be postprocessed using processOutput.
{return} string the rendering result. Null if the rendering result is not required.

$view 常用的, 即返回给哪个视图模板

$data 常用的, 即返回给视图模板时, 附带的数据

$return 默认值是 false 一般不使用, 为false时, 渲染html页面;为true时, 会把html代码输出给你(如果你愿意的话, 可以接收这些html代码)

$processOutput 默认值 false 一般不使用, 但本问题的关键也是这个参数了, 下面是这个参数的一些说明

具体参见 http://www.yiichina.com/api/CController#processOutput-detail

processOutput() 方法


public string processOutput(string $output)
$output string the output generated by the current action
{return} string the output that has been processed.

源码: framework/web/CController.php#350 (显示)

Postprocesses the output generated by render(). This method is invoked at the end of render() and renderText(). If there are registered client scripts, this method will insert them into the output at appropriate places. If there are dynamic contents, they will also be inserted. This method may also save the persistent page states in hidden fields of stateful forms in the page.

个人理解, 就是指, 如果有注册的js css 时, 是否载入. 为 false 时, 不载入; true 时 载入.

===(以下是摘自互联网的一些关于此问题的说明)==============================================================

原文 http://blog.sina.com.cn/s/blog_7d0c4ede0101glhk.html

后台登陆调用验证码,点击验证码不刷新,没有反应(所有验证码配置,参数都是正确的)。找错的时候发现可以刷新验证码的页面比不可以刷新验证码的页面多了一段js代码,用来处理点击验证码刷新的事件。

为什么会少了一段代码?原来就是因为控制器分别调用了renderPartial和render. 下面就说说它们的区别:

在进行页面输出渲染的时候。

render 输出父模板的内容,将渲染的内容,嵌入父模板。
renderPartial 则不输出父模板的内容。只对本次渲染的局部内容,进行输出。
同时还有个重要的区别:

render 函数内部默认执行processOutput($output)函数, 会将把组件,比如 CTreeView 里面注册到CClientScript 里面的需要的脚本进行渲染输出。

而renderPartial() 默认不自动渲染输出客户端脚本,需要进行参数的指定,才会输出:
renderPartial($view,$data=null,$return=false,$processOutput=false)
指定processOutput 为 true 即可。

就像我们遇到的问题,用renderPartial时,页面没有输出验证码刷新的那段js。所以就没有反应。

render 与 renderPartial 区别

render 与 renderPartial 都属于 CController 里的方法

yiichina

renderPartial http://www.yiichina.com/api/CController#renderPartial-detail

render http://www.yiichina.com/api/CController#render-detail

blog

http://tofar.blog.163.com/blog/static/20402210620126124311981/

关于 yii 验证码显示, 但点击不能刷新的处理

时间: 2024-08-03 22:30:27

关于 yii 验证码显示, 但点击不能刷新的处理的相关文章

ThinkPHP3.2.3验证码显示、刷新、校验

显示验证码 首先在Home/Controller下创建一个公共控制器PublicController 1 <?php 2 namespace Home\Controller; 3 4 use Think\Controller; 5 use Think\Verify; 6 7 class PublicController extends Controller 8 { 9 10 /* 生成验证码 */ 11 public function verify() 12 { 13 $config = [ 1

Yii 验证码验证

控制器如下 LoginForm如下 视图如下 <div class="loginbody">            <span class="systemlogo"></span>             <div class="loginbox">                <ul>                    <?php $form = $this->beg

yii 验证码 CCaptcha的总结(转)

今天用到yii的验证码 ccaptcha,经过在网上搜寻 找到以下例子: 1.在controller中加入代码 (1)启用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php public function actions()     {         return array(             // 启用验证码组件             'captcha'=>array(                 'class'=>'CCaptchaA

yii 验证码的使用

在HappyController 中加入 public function actions(){ return array( // captcha action renders the CAPTCHA image displayed on the contact page 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xFFFFFF, //背景颜色 'minLength'=>4, //最短为4位 'maxLeng

yii验证码Captcha使用以及为什么验证码不刷新问题

Web开发的过程中, 经常会用到验证码, 以防止机器人不断的提交数据, 造成网站的瘫痪. Yii里提供了一个验证码的插件, 就是Captcha. 第一步: 在项目中使用Captcha需要以下一些设置:在Controller里添加方法 actions public function actions () { return array ( 'captcha' => array ( 'class' => 'CCaptchaAction' , 'minLength' => 1 , 'maxLen

CI 点击图片刷新验证码

<img src="<?php echo site_url('home/login/code'); ?>" onclick= this.src="<?php echo site_url('home/login/code').'/'?>"+Math.random() /> CI 点击图片刷新验证码,布布扣,bubuko.com

.net图片验证码生成、点击刷新及验证输入是否正确

①创建ValidateCode.aspx,在ValidateCode.aspx.cs中加入如下代码.生成验证码图片,在页面上输出,输出jpeg格式. protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bitmap b = new Bitmap(80, 30);// 图片大小 Graphics g = Graphics.FromImage(b);// 对图片操作 g.Clear(Color.Gray)

yii 验证码那点事儿

今天要使用yii验证码, 不过, 这个验证码是整站通用的, 也就是说, 有个表单的提交是使用ajax方式来提交, 整站, 不管在哪个地方, 都能点出来此窗口, 来提交信息 关于yii验证码, framework/web/widgets/captcha/CCaptcha.php里, 它源码里有这么一部分 >---protected function renderImage() >---{ >--->---if(!isset($this->imageOptions['id']))

页面实现验证码功能,点击“注册”按钮后,无论是否完成注册,验证码都能够自动刷新

要求页面实现验证码功能,点击"注册"按钮后,无论是否完成注册,验证码都能够自动刷新 <script> function validteCode() { var codes = new Array(4);       // var colors = new Array("Red","Green","Gray","Blue","Maroon","Aqua",&