关于 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
|
public string processOutput(string $output)
|
||
| $output | string | the output generated by the current action |
| {return} | string | the output that has been processed. |
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 验证码显示, 但点击不能刷新的处理的更多相关文章
- thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
这篇文章主要介绍了thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法,结合简单示例形式分析了thinkPHP5框架验证码相关配置.后台验证.前台刷新等操作技巧,学习thinkphp源码的朋 ...
- ThinkPHP3.2.3验证码显示、刷新、校验
显示验证码 首先在Home/Controller下创建一个公共控制器PublicController <?php namespace Home\Controller; use Think\Con ...
- yii 验证码 CCaptcha的总结(转)
今天用到yii的验证码 ccaptcha,经过在网上搜寻 找到以下例子: 1.在controller中加入代码 (1)启用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 &l ...
- .net图片验证码生成、点击刷新及验证输入是否正确
①创建ValidateCode.aspx,在ValidateCode.aspx.cs中加入如下代码.生成验证码图片,在页面上输出,输出jpeg格式. protected void Page_Load( ...
- J2EE如何生成验证码图片和点击刷新验证码
验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColo ...
- yii 验证码那点事儿
今天要使用yii验证码, 不过, 这个验证码是整站通用的, 也就是说, 有个表单的提交是使用ajax方式来提交, 整站, 不管在哪个地方, 都能点出来此窗口, 来提交信息 关于yii验证码, fram ...
- ThinkPHP的验证码刷新显示和验证码显示不出来的原因
1.应当这样<imp src='验证码路径' onclick="this.src='验证码路径?'+Math.random()">;如果后面不加Math.random( ...
- js或jquery实现点击某个按钮或元素显示div,点击页面其他任何地方隐藏div
点击某个元素显示div,点击页面其他任何地方隐藏div,可用javascript和jquery两种方法实现: 一:javascript实现方法技巧<script>//定义stopPropa ...
- PHP验证码显示不出来
PHP验证码显示不出来 验证码图片显示不出来,原因一般有三种(网上基本一致这几种原因): (1)php没有安装gd2模块,可以使用phpinfo()函数查看. (2)代码很可能是使用了像editpul ...
随机推荐
- CSS3 box-shadow(阴影使用)
from: http://jingyan.baidu.com/article/03b2f78c4d9fae5ea237aea6.html css3 box-shadow 内阴影与外阴影 1- box- ...
- 那些年被我坑过的Python——你来我往(第九章 selectors)
进程.线程.协程(微线程).队列的概念理解 进程进程是所有相关资源的集合,而线程是和CPU交互的最小单元进程至少包含一个线程,是主线程线程线程之间可以共享资源线程同时修改同一份数据时必须加锁,mute ...
- C程序设计语言练习题1-16
练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本. 代码如下: #include <stdio.h> // 包含标准库的信息 ...
- Unity3d webplayer发布的问题和100%自适应浏览器
Unity3d发布的问题 发布的时候,遇到无法写入Resources.assets,原来是我的项目中有多个Resources文件夹,以后最好是不要有重复的文件夹和一样名字的资源! 还有就是发布的web ...
- ibatis报错
关键词:org.springframework.dao.DataIntegrityViolationException 在程序中进行数据库插入操作时报错如下: 未知异常:org.springframe ...
- 跨进程发送消息数据(发送WM_COPYDATA消息,够简单的)
1 //1.发送窗体 2 procedure TForm2.Button1Click(Sender: TObject); 3 var 4 h: HWND; 5 Size: Integer; 6 Cop ...
- Eclipse调试的一些小技巧
不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时如何添加断点,通常的做法是双击行号的左边.在de ...
- bzoj2789
这种题目肯定是先把一个当做标准串根据标准串得出一个初始串是怎么排列的,然后求逆序对数就可以了但是因为有重复,我们不知道标准串中的一个数到底是由原来哪个字母交换来的但是我们可以猜,不难贪心得到对于标准串 ...
- 字符串(马拉车算法,后缀数组,稀疏表):BZOJ 3676 [Apio2014]回文串
Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. Input 输入只有一行 ...
- 平衡树(Splay):Splaytree POJ 3580 SuperMemo
SuperMemo Description Your friend, Jackson is invited to a TV show called SuperMemo in which ...