yii 常用一些调用

news2024/11/7 16:47:58

yii 常用一些调用 (增加中)
调用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::app()->homeUrl;

YII FRAMEWORK的COOKIE使用方法
设置cookie:

[php] view plain copy

$cookie = new CHttpCookie(‘mycookie’,‘this is my cookie’);
c o o k i e − > e x p i r e = t i m e ( ) + 60 ∗ 60 ∗ 24 ∗ 30 ; / / 有限期 30 天 Y i i : : a p p ( ) − > r e q u e s t − > c o o k i e s [ ′ m y c o o k i e ′ ] = cookie->expire = time()+60*60*24*30; //有限期30天 Yii::app()->request->cookies['mycookie']= cookie>expire=time()+60602430;//有限期30Yii::app()>request>cookies[mycookie]=cookie;

读取cookie:
[html] view plain copy

$cookie = Yii::app()->request->getCookies();
echo $cookie[‘mycookie’]->value;

销毁cookie:
[html] view plain copy

$cookie = Yii::app()->request->getCookies();
unset(cookie[name]);

在控制器添加CSS文件或JAVASCRIPT文件

[php] view plain copy

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()方法来实现我们自己的验证方法.具体代码如下:

[php] view plain copy

class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
r e c o r d = U s e r : : m o d e l ( ) − > f i n d B y A t t r i b u t e s ( a r r a y ( ′ u s e r n a m e ′ = > record=User::model()->findByAttributes(array('username'=> record=User::model()>findByAttributes(array(username=>this->username));
if($record===null)
t h i s − > e r r o r C o d e = s e l f : : E R R O R U S E R N A M E I N V A L I D ; e l s e i f ( this->errorCode=self::ERROR_USERNAME_INVALID; else if( this>errorCode=self::ERRORUSERNAMEINVALID;elseif(record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
t h i s − > i d = this->_id= this>id=record->id;
$this->setState(‘title’, $record->title);
KaTeX parse error: Expected 'EOF', got '}' at position 45: …ONE; }̲ retu…this->errorCode;
}
public function getId()
{
return $this->_id;
}
}

在用户登陆时则调用如下代码:

// 使用提供的用户名和密码登录用户
[html] view plain copy

i d e n t i t y = n e w U s e r I d e n t i t y ( u s e r n a m e , p a s s w o r d ) ; i f ( identity=new UserIdentity(username,password); if( identity=newUserIdentity(username,password);if(identity->authenticate())
Yii::app()->user->login($identity);
else
echo $identity->errorMessage;

用户退出时,则调用如下代码:

[html] view plain copy

// 注销当前用户
Yii::app()->user->logout();

其中的user是yii的一个components.需要在protected/config/main.php中定义
[html] view plain copy

‘user’=>array(
// enable cookie-based authentication
‘allowAutoLogin’=>true,
‘loginUrl’ => array(‘site/login’),
),

YII FRAMEWORK中TRASACTION事务的应用

[html] view plain copy

$model=Post::model();
t r a n s a c t i o n = transaction= transaction=model->dbConnection->beginTransaction();
try
{
// find and save are two steps which may be intervened by another request
// we therefore use a transaction to ensure consistency and integrity
p o s t = post= post=model->findByPk(10);
$post->title=‘new post title’;
$post->save();
$transaction->commit();
}
catch(Exception $e)
{
$transaction->rollBack();
}

Yii Framework中截取字符串(UTF-8)的方法

Helper.PHP

[php] view plain copy

class Helper extends CController
{
public static function truncate_utf8_string($string, $length, $etc = ‘…’)
{
$result = ‘’;
s t r i n g = h t m l e n t i t y d e c o d e ( t r i m ( s t r i p t a g s ( string = html_entity_decode(trim(strip_tags( string=htmlentitydecode(trim(striptags(string)), ENT_QUOTES, ‘UTF-8’);
s t r l e n = s t r l e n ( strlen = strlen( strlen=strlen(string);
for ( i = 0 ; ( ( i = 0; (( i=0;((i < KaTeX parse error: Expected 'EOF', got '&' at position 9: strlen) &̲& (length > 0)); KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (number = strpos(str_pad(decbin(ord(substr($string, KaTeX parse error: Expected '}', got 'EOF' at end of input: … if (length < 1.0)
{
break;
}
r e s u l t . = s u b s t r ( result .= substr( result.=substr(string, $i, $number);
$length -= 1.0;
$i += $number - 1;
}
else
{
r e s u l t . = s u b s t r ( result .= substr( result.=substr(string, $i, 1);
$length -= 0.5;
}
}
r e s u l t = h t m l s p e c i a l c h a r s ( result = htmlspecialchars( 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::truncateutf8string(content,20); //显示省略号

CBREADCRUMBS简介~俗称:面包屑
功能介绍:zii.widgets 下的CBreadcrumbs类,其继承关系: CBreadcrumbs » CWidget »
CBaseController » CComponent .源代码位置:
framework/zii/widgets/CBreadcrumbs.php
面包屑类显示一个链接列表以表明当前页面在整个网站中的位置.
由于面包屑通常会出现在网站的近乎所有的页面,此插件最好在视图的layout中进行部署.
你可以定义一个breadcrumbs属性并且在布局文件中指派给(网站)基础控制器插件,如下所示:

[html] view plain copy

t h i s − > w i d g e t ( ′ z i i . w i d g e t s . C B r e a d c r u m b s ′ , a r r a y ( ′ l i n k s ′ = > this->widget('zii.widgets.CBreadcrumbs', array( 'links'=> this>widget(zii.widgets.CBreadcrumbs,array(links=>this->breadcrumbs,
));

于是乎,你需要时,只需要在每个视图脚本中,指定breadcrumbs属性(就可以显示出网页导航了).
以上是官方提供的文档文件的介绍.
下面介绍视图文件中写法:

[html] view plain copy

$this->breadcrumbs=array(
‘Users’=>array(‘index’),
‘Create’,
// 形式 : ‘key’ =>‘value’ key的位置相当于最后显示出来的a标签内的名字, value则相当于a标签的href属性.
// 'Create’表示当前页 故没有设置链接.
);

YII FRAMEWORK中验证码的使用
1.在controller中修改:

[html] view plain copy

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表单中添加如下代码:

[html] view plain copy

<?php if(CCaptcha::checkRequirements()): ?>
<?php echo $form->labelEx($model,'verifyCode'); ?>
<?php $this->widget('CCaptcha'); ?> <?php echo $form->textField($model,'verifyCode'); ?>
Please enter the letters as they are shown in the image above.
Letters are not case-sensitive.
<?php echo $form->error($model,'verifyCode'); ?>
<?php endif; ?>

YII FRAMEWORK的CHTML::LINK支持锚点
CHtml::link(‘链接文字’,array(‘article/view’,‘id’=>‘3’,‘#’=>‘锚名称’);

CUrlManager的 createUrl,是可以支持 ‘#’ 的!

params = array(‘userid’ => 100, ‘#’ => ‘锚名称’);this->createUrl(route,params);

YII FRAMEWORK在WEB页面查看SQL语句配置

[html] view plain copy

‘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结果

[html] view plain copy

KaTeX parse error: Expected '}', got 'EOF' at end of input: … var_dump(v->attributes);
}

yii 数据save后得到插入id

post−>save();//得到上次插入的Insertidid = $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多对多关联条件
[html] view plain copy

c r i t e r i a − > a d d I n C o n d i t i o n ( ′ c a t e g o r y s . i d ′ , criteria->addInCondition('categorys.id', criteria>addInCondition(categorys.id,in);
c r i t e r i a − > a d d S e a r c h C o n d i t i o n ( ′ S h o p . n a m e ′ , k e y w o r d ) ; s h o p s = S h o p : : m o d e l ( ) − > w i t h ( a r r a y ( ′ c a t e g o r y s ′ = > a r r a y ( ′ t o g e t h e r ′ = > t r u e ) ) ) − > f i n d A l l ( criteria->addSearchCondition('Shop.name',keyword);shops=Shop::model()->with(array('categorys'=>array('together'=>true)))->findAll( 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过滤不良代码
[html] view plain copy

$purifier=new CHtmlPurifier;
$purifier->options=array(‘HTML.Allowed’=>‘div’);
c o n t e n t = content= content=purifier->purify($content);
或者
[html] view plain copy

<?php $this->beginWidget('CHtmlPurifier'); ?>

…display user-entered content here…

<?php $this->endWidget(); ?>

显示yii的sql语句查询条数和时间
在config/main.php中配置在log组件的routes中加入
[html] view plain copy

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实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2235145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三:LoadBalancer负载均衡服务调用

LoadBalancer负载均衡服务调用 1.LB负载均衡(Load Balance)是什么2.loadbalancer本地负载均衡客户端 与 Nginx服务端负载均衡区别3.实现loadbalancer负载均衡实例3-1.首先应模拟启动多个服务提供者应用实例&#xff1a;3-2.在服务消费项目引入LoadBalancer3-3&#xff1a;测试用…

简单入门Git

Git作用 Git简介 作用&#xff1a;版本控制多人协作 集中式 典型代表&#xff1a;SVN 特点&#xff1a;所有的版本库都存在中央服务器&#xff0c;本地备份动作必须依赖中央服务器&#xff0c;如果一旦服务器挂掉&#xff0c;或者网络状况不好&#xff0c;没法提交版本。…

解决echarts桑基图为0时tooltip不显示的问题

关键代码 formatter: function (params) {console.log("params",params)if (params.value 0) {// 如果值为0&#xff0c;返回空字符串&#xff0c;不显示任何内容return params.name : params.value;// return ;} else {// 否则返回标准的格式化信息return par…

DevOps业务价值流:版本规划的最佳实践

初入公司&#xff0c;面对瀑布研发模式下的冗长周期与频繁返工&#xff0c;我率先尝试局部敏捷迭代&#xff0c;但成效有限。随后&#xff0c;推动全面敏捷化&#xff0c;从需求阶段即开始规划&#xff0c;虽方向正确&#xff0c;却遭遇版本规划难题。项目经理与产品经理对敏捷…

NewStar CTF 2024 misc WP

decompress 压缩包套娃&#xff0c;一直解到最后一层&#xff0c;将文件提取出来 提示给出了一个正则&#xff0c;按照正则爆破密码&#xff0c;一共五位&#xff0c;第四位是数字 ^([a-z]){3}\d[a-z]$ 一共就五位数&#xff0c;直接ARCHPR爆破&#xff0c;得到密码 xtr4m&…

2020年美国总统大选数据分析与模型预测

数据集取自&#xff1a;2020年&#x1f1fa;&#x1f1f8;&#x1f1fa;&#x1f1f8;美国大选数据集 - Heywhale.com 前言 对2020年美国总统大选数据的深入分析&#xff0c;提供各州和县层面的投票情况及选民行为的可视化展示。数据预处理阶段将涉及对异常值的处理&#xff0…

A Consistent Dual-MRC Framework for Emotion-cause Pair Extraction——论文阅读笔记

前言 这是我第一次向同学院同年级的学生和老师们汇报的第一篇论文,于2022年发表在TOIS上,属于CCF A类,主要内容是将MRC应用到情感原因对抽取中。 论文链接:用于情绪-原因对提取的一致双 MRC 框架 |信息系统上的 ACM Transactions 这里我就不放上我自己翻译的中文版还有我…

智慧公厕解决方案是未来厕所新建和改造的方向

在当今科技飞速发展的时代&#xff0c;智慧公厕解决方案正逐渐成为厕所新建和改造的主流方向&#xff0c;为人们带来更便捷、卫生、高效的使用体验。 一、智能化体验提升便捷性 智慧公厕配备了一系列智能设施&#xff0c;极大地提升了使用的便捷性。比如&#xff0c;智能环保取…

python爬取m3u8视频(思路到实现全讲解!!!)

文章目录 抓取m3u8视频1、思路分析2、实现分析index.m3u8 3、代码实现3.1 获取最后一个m3u8的url地址3.2 多线程下载ts文件与视频合并3.3 合并获取上面俩个代码段的代码 4、注意事项4.1 说明4.2 使用代码进行处理4.3 完整代码 5、解密处理 处理m3u8文件中的url问题 抓取m3u8视频…

“方块兽神仙猿点石成金”游戏搭建开发

“方块兽神仙猿点石成金”是一款结合了策略和运气的休闲游戏。玩家需在规定时间内向不同的山头投入矿石&#xff0c;等待神仙猿降临并随机选择一座山进行“点石成金”。根据神仙猿的选择&#xff0c;玩家将获得不同的奖励。 游戏核心机制 矿石投入&#xff1a;玩家在游戏开始…

Centos Linux 7 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器&#xff08;需要不被服务商限制发件收件的&#xff0c;也就是端口25、110、143、465、587、993、995不被限制&#xff09;&#xff0c;如有防火墙或安全组需要把这些端口开放 2. 一个域名&#xff0c;最好是com cn org的一级域名 3. 域名备案&am…

二级列表联动

介绍 本示例主要介绍了List组件实现二级联动&#xff08;Cascading List&#xff09;的场景。 该场景多用于商品种类的选择、照片不同类型选择等场景。 效果图 使用说明&#xff1a; 滑动二级列表侧控件&#xff08;点击没用&#xff09;&#xff0c;一级列表随之滚动。&…

简易三步骤教程:轻松在本地搭建并运行大型模型!

在当前的技术环境下&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为人工智能领域的一个重要里程碑。这些模型能够在各种任务上展现出人类水平的性能&#xff0c;包括但不限于文本生成、语言理解和问题解答。随着开源项目的发展&#xff0c;个人开发者现在有机会…

C#与C++交互开发系列(二十):跨进程通信之共享内存(Shared Memory)

1、前言 共享内存&#xff08;Shared Memory&#xff09;是一种高效的跨进程通信方式&#xff0c;尤其适用于同一台计算机上的进程之间的高速数据传输。与套接字相比&#xff0c;共享内存允许多个进程直接访问同一块内存区域&#xff0c;减少了数据传输的中间步骤&#xff0c;…

萌熊数据科技:剑指脑机转入,开启科技新篇章

近日&#xff0c;科技圈传来一则令人瞩目的消息&#xff0c;天津萌熊数据科技有限公司和天津一万年科技发展有限公司在全国范围内大力开展AI加生命科学的主体业务&#xff0c;并明确将朝着脑机转入方向深入发展&#xff0c;引发了行业内外的广泛关注。 天津萌熊数据科技有限公司…

计算机网络:网络层 —— IP 多播技术

文章目录 基本概念IP多播地址和多播组 IP多播的类型硬件多播将IPv4多播地址映射为多播MAC地址 基本概念 多播&#xff08;Multicast&#xff0c;也称为组播&#xff09;是一种实现“一对多”通信的技术&#xff0c;允许一台或多台主机&#xff08;多播源&#xff09;发送单一数…

使用Markdown编写适用于GitHub的README.md文件的目录结构

文章目录 [toc] 顶部1. 使用[TOC]自动生成2. VSCode中的插件3. 手搓目录目录相关资料本文相关代码一、概述1.1 基本概念1.2 两种处理模型&#xff08;1&#xff09;微批处理&#xff08;2&#xff09;持续处理 1.3 Structured Streaming和Spark SQL、Spark Streaming关系 二、编…

旧衣回收小程序:提高回收效率,扩大服务范围

近年来&#xff0c;旧衣回收作为一种新兴回收模式&#xff0c;逐渐走入了大众的生活中&#xff0c;在回收市场中形成了新的商业模式&#xff0c;也为大众带来了新的创业选择。 随着社会生活的快速发展&#xff0c;人们的生活水平不断提高&#xff0c;为旧衣市场发展提供了基础…

0-基于图的组合优化算法学习(NeurIPS 2017)(未完)

文章目录 Abstract1 Introduction2 图上的贪婪算法的通用表述3 表示:图嵌入3.1 Structure2Vec3.2 参数化 Q ^ ( h ( S ) , v ; Θ ) \widehat{Q}(h(S), v; \Theta) Q ​(h(S),v;Θ)4 Training: Q-learningAbstract 为NP-hard组合优化问题设计好的启发式或近似算法通常需要大…

python验证码滑块图像识别

文章目录 1、案例图片1、需求说明2、代码实现总结 1、案例图片 1、需求说明 python 3.10,写一个滑块验证码的自动化程序。需要一个opencv的函数&#xff0c;能准确的计算&#xff0c;在这同一张图片上&#xff0c;滑块形状和缺口形状的坐标位置及两个形状之间在X轴上的距离。请…