调用YII框架中 jquery:Yii::app()->clientScript->registerCoreScript('jquery');
framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/packages.php列表中可以查看
在view中得到当前controller的ID方法 :Yii::app()->getController()->id;
在view中得到当前action的ID方法 :Yii::app()->getController()->getAction()->id;
yii获取ip地址 :Yii::app()->request->userHostAddress;
yii判断提交方式 :Yii::app()->request->isPostRequest
得到当前域名: Yii::app()->request->hostInfo
得到proteced目录的物理路径 :YII::app()->basePath;
获得上一页的url以返回 :Yii::app()->request->urlReferrer;
得到当前url :Yii::app()->request->url;
得到当前home url :Yii::app()->homeUrl
得到当前return url :Yii::app()->user->returnUrl
项目路径 :dirname(Yii::app()->BasePath)
项目目录 Yii::app()->request->baseUrl
只输出一个连接(url)<?php echo $this->createUrl('admin/left_menu');?> //**.php?r=admin/left_menu
输出一组url(yii url 默认样式)
<?php $this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'主菜单', 'url'=>array('/admin/left_menu')),
array('label'=>'内容发布', 'url'=>array('/admin/page')),
array('label'=>'内容维护', 'url'=>array('/site/contact')),
array('label'=>'系统主页', 'url'=>array('/site/login')),
array('label'=>'网站主页', 'url'=>array('/site/logout')),
array('label'=>'会员中心', 'url'=>array('/site/login')),
array('label'=>'注销', 'url'=>array('/site/login')),
),
)); ?>
//除域名外的URL
Yii::app()->request->getUrl();
除域名外的首页地址
Yii::app()->user->returnUrl;
6、//除域名外的根目录地址
YII FRAMEWORK的用户验证与授权
在用户登陆时则调用如下代码:
// 使用提供的用户名和密码登录用户
用户退出时,则调用如下代码:
其中的user是yii的一个components.需要在protected/config/main.php中定义
将Helper.php放进protected\components文件夹下。
使用方法:
Helper::truncate_utf8_string($content,20,false); //不显示省略号
Helper::truncate_utf8_string($content,20); //显示省略号
2.在view的form表单中添加如下代码:
YII FRAMEWORK的CHTML::LINK支持锚点
YII FRAMEWORK打印AR结果
同时要在Shop模型中加入alias='categorys' ,另外together=true放在模型的关联中也可
或者
同时在db组件中加入'enableProfiling'=>true,同时在这种情况下,可以用CDbConnection::getStats() 查看执行了多少个语句,用了多少时间print_r(CDbConnection::getStats());
......操作在代码里,可以通过Yii::app()->db1和Yii::app()->db2获得两个从连接。高级操作更高级(自动)的主从数据库功能将在1.1实现。
framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/packages.php列表中可以查看
在view中得到当前controller的ID方法 :Yii::app()->getController()->id;
在view中得到当前action的ID方法 :Yii::app()->getController()->getAction()->id;
yii获取ip地址 :Yii::app()->request->userHostAddress;
yii判断提交方式 :Yii::app()->request->isPostRequest
得到当前域名: Yii::app()->request->hostInfo
得到proteced目录的物理路径 :YII::app()->basePath;
获得上一页的url以返回 :Yii::app()->request->urlReferrer;
得到当前url :Yii::app()->request->url;
得到当前home url :Yii::app()->homeUrl
得到当前return url :Yii::app()->user->returnUrl
项目路径 :dirname(Yii::app()->BasePath)
项目目录 Yii::app()->request->baseUrl
只输出一个连接(url)<?php echo $this->createUrl('admin/left_menu');?> //**.php?r=admin/left_menu
输出一组url(yii url 默认样式)
<?php $this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'主菜单', 'url'=>array('/admin/left_menu')),
array('label'=>'内容发布', 'url'=>array('/admin/page')),
array('label'=>'内容维护', 'url'=>array('/site/contact')),
array('label'=>'系统主页', 'url'=>array('/site/login')),
array('label'=>'网站主页', 'url'=>array('/site/logout')),
array('label'=>'会员中心', 'url'=>array('/site/login')),
array('label'=>'注销', 'url'=>array('/site/login')),
),
)); ?>
//除域名外的URL
Yii::app()->request->getUrl();
除域名外的首页地址
Yii::app()->user->returnUrl;
6、//除域名外的根目录地址
Yii::app()->homeUrl;
- public function init()
- {
- parent::init();
- Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/my.css');
- Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/css/my.js');
- }
YII FRAMEWORK的用户验证与授权
yii提供了CUserIdentity类,这个类一般用于验证用户名和密码的类.继承后我们需要重写其中的authenticate()方法来实现我们自己的验证方法.具体代码如下:
- class UserIdentity extends CUserIdentity
- {
- private $_id;
- public function authenticate()
- {
- $record=User::model()->findByAttributes(array('username'=>$this->username));
- if($record===null)
- $this->errorCode=self::ERROR_USERNAME_INVALID;
- else if($record->password!==md5($this->password))
- $this->errorCode=self::ERROR_PASSWORD_INVALID;
- else
- {
- $this->_id=$record->id;
- $this->setState('title', $record->title);
- $this->errorCode=self::ERROR_NONE;
- }
- return !$this->errorCode;
- }
- public function getId()
- {
- return $this->_id;
- }
- }
在用户登陆时则调用如下代码:
// 使用提供的用户名和密码登录用户
- $identity=new UserIdentity($username,$password);
- if($identity->authenticate())
- Yii::app()->user->login($identity);
- else
- echo $identity->errorMessage;
用户退出时,则调用如下代码:
- // 注销当前用户
- Yii::app()->user->logout();
其中的user是yii的一个components.需要在protected/config/main.php中定义
- 'user'=>array(
- // enable cookie-based authentication
- 'allowAutoLogin'=>true,
- 'loginUrl' => array('site/login'),
- ),
Yii Framework中截取字符串(UTF-8)的方法
Helper.PHP
- class Helper extends CController
- {
- public static function truncate_utf8_string($string, $length, $etc = '...')
- {
- $result = '';
- $string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'UTF-8');
- $strlen = strlen($string);
- for ($i = 0; (($i < $strlen) && ($length > 0)); $i++)
- {
- if ($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
- {
- if ($length < 1.0)
- {
- break;
- }
- $result .= substr($string, $i, $number);
- $length -= 1.0;
- $i += $number - 1;
- }
- else
- {
- $result .= substr($string, $i, 1);
- $length -= 0.5;
- }
- }
- $result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');
- if ($i < $strlen)
- {
- $result .= $etc;
- }
- return $result;
- }
- }
将Helper.php放进protected\components文件夹下。
使用方法:
Helper::truncate_utf8_string($content,20,false); //不显示省略号
Helper::truncate_utf8_string($content,20); //显示省略号
1.在controller中修改:
- 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位
- 'maxLength'=>4, //是长为4位
- 'transparent'=>true, //显示为透明
- ),
- );
- }
2.在view的form表单中添加如下代码:
- <?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 they are shown in the image above.
- <br/>Letters are not case-sensitive.</div>
- <?php echo $form->error($model,'verifyCode'); ?>
- </div>
- <?php endif; ?>
YII FRAMEWORK的CHTML::LINK支持锚点
CHtml::link('链接文字',array('article/view','id'=>'3','#'=>'锚名称');
CUrlManager的 createUrl,是可以支持 '#' 的!
$params = array('userid' => 100, '#' => '锚名称');
$this->createUrl($route, $params);
- 'components'=>array(
- 'errorHandler'=>array(
- // use 'site/error' action to display errors
- 'errorAction'=>'site/error',
- ),
- 'log'=>array(
- 'class'=>'CLogRouter',
- 'routes'=>array(
- array(
- 'class'=>'CFileLogRoute',
- 'levels'=>'error, warning',
- ),
- // 下面显示页面日志
- array(
- 'class'=>'CWebLogRoute',
- 'levels'=>'trace', //级别为trace
- 'categories'=>'system.db.*' //只显示关于数据库信息,包括数据库连接,数据库执行语句
- ),
- ),
- ),
- ),
YII FRAMEWORK打印AR结果
- $user = 模型->model()->findAll();
- foreach($user $v) {
- var_dump($v->attributes);
- }
yii 数据save后得到插入id
- $post->save();
- //得到上次插入的Insert id
- $id = $post->attributes['id'];
yii获取ip地址
- Yii::app()->request->userHostAddress;
yii execute后获取insert id
- $id = Yii::app()->db->getLastInsertID();
yii获取get,post过来的数据
- Yii::app()->request->getParam('id');
yii如何设置时区
可以在config/main.php 里'timeZone'=>'Asia/Chongqing',设定时区.
yii如何将表单验证提示弄成中文的
将main.php里的app配置加上language=>'zh_cn',系统默认的提示就是中文的了,要自定义消息就像楼上说的定义message
yii如何获得上一页的url以返回
- Yii::app()->request->urlReferrer;
yii多对多关联条件
- $criteria->addInCondition('categorys.id',$in);
- $criteria->addSearchCondition('Shop.name',$keyword);$shops=Shop::model()->with(array('categorys'=>array('together'=>true)))->findAll($criteria);
同时要在Shop模型中加入alias='categorys' ,另外together=true放在模型的关联中也可
yii如何防止重复提交?
提交后Ccontroler->refresh();
yii过滤不良代码
- $purifier=new CHtmlPurifier;
- $purifier->options=array('HTML.Allowed'=>'div');
- $content=$purifier->purify($content);
- <?php $this->beginWidget('CHtmlPurifier'); ?>
- ...display user-entered content here...
- <?php $this->endWidget(); ?>
显示yii的sql语句查询条数和时间
在config/main.php中配置在log组件的routes中加入
- array(
- 'class'=>'CProfileLogRoute',
- 'levels'=>'error, warning',
- )
同时在db组件中加入'enableProfiling'=>true,同时在这种情况下,可以用CDbConnection::getStats() 查看执行了多少个语句,用了多少时间print_r(CDbConnection::getStats());
Yii多数据库操作
大多数情况下,我们都会采用同一类型的数据库,只是为了缓解压力分成主从或分布式形式而已。声明你可以在app config里声明其它的数据库连接:- <?php
- ......
- 'components'=>array(
- 'db'=>....// 主链接
- 'db1'=>...// 从连接1
- 'db2'=>...// 从连接2
- )
......操作在代码里,可以通过Yii::app()->db1和Yii::app()->db2获得两个从连接。高级操作更高级(自动)的主从数据库功能将在1.1实现。