yii 常用一些调用
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 默认样式)
//除域名外的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()+60∗60∗24∗30;//有限期30天Yii::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()): ?>Letters are not case-sensitive.
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
…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里声明其它的数据库连接:
相关文章:
yii 常用一些调用
yii 常用一些调用 (增加中) 调用YII框架中 jquery:Yii::app()->clientScript->registerCoreScript(‘jquery’); framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/packages.php列表中可以查看 在view中得到当前contro…...

网页版五子棋——用户模块(服务器开发)
前一篇文章:网页版五子棋—— WebSocket 协议-CSDN博客 目录 前言 一、编写数据库代码 1.数据库设计 2.配置 MyBatis 3.创建实体类 4.创建 UserMapper 二、前后端交互接口 1.登录接口 2.注册接口 3.获取用户信息 三、服务器开发 1.代码编写 2.测试后端…...

以RK3568为例,ARM核心板如何实现NTP精准时间同步?
背景 网络时间协议NTP(Network TimeProtocol)是用于互联网中时间同步的标准互联网协议,可以把计算机的时间同步到某些时间标准。NTP对于我们产品来说有什么用呢,简单的讲,当你的设备时间不准确了,你可以接…...

Twitter(X)2024最新注册教程
Twitter 现名为X,因为图标是一只小鸟的形象,大家也叫它小蓝鸟(埃隆马斯克于 2023 年对该平台进行了品牌重塑),目前仍然是全球最受欢迎的社交媒体和微博平台之一,全球活跃用户量大概在4.5亿。尤其是欧美国家…...
10.桥接模式设计思想
10.桥接模式设计思想 目录介绍 01.桥接模式基础 1.1 桥接模式由来1.2 桥接模式定义1.3 桥接模式场景1.4 桥接模式思考1.5 解决的问题 02.桥接模式实现 2.1 罗列一个场景2.2 桥接结构2.3 桥接基本实现2.4 有哪些注意点 03.桥接实例演示 3.1 需求分析3.2 代码案例实现3.3 是否可…...

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
这里是Themberfue 在上一节的最后,我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中,我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …...

(已解决)Dependency “ ” not found 细谈
剖析原因:依赖在pom文件中引用后,然后ReLoad,此依赖会在你配置的本地仓库里面找,并下载下来,他报not found就是没有找到。 本地仓库的位置: 进一步深究:在本地仓库找的时候,他又会…...

网络编程、UDP、TCP、三次握手、四次挥手
一、初识网络编程 网络编程的概念:在网络通信协议下,不同计算机上运行的程序,进行的数据传输。 应用场景:即时通信、网游对战、金融证券、国际贸易、邮件等等。 不管是什么场景,都是计算机和计算机之间通过网络进行…...

程序员的生活周刊 #7:耐克总裁被裁记
0. 庙宇 这张图来自 Tianshu Liu, 被树木环绕的宝塔庙宇 1. 耐克总裁 耐克最近的总裁 John Donahoe 干了 5 年,终于被裁掉了。 这位总裁即不了解球鞋文化,也没有零售经验,但不懂事的董事会还是聘用它,寄托把耐克从运…...

sparkSQL的UDF,最常用的regeister方式自定义函数和udf注册方式定义UDF函数 (详细讲解)
- UDF:一对一的函数【User Defined Functions】 - substr、split、concat、instr、length、from_unixtime - UDAF:多对一的函数【User Defined Aggregation Functions】 聚合函数 - count、sum、max、min、avg、collect_set/list - UDTF:…...
【Ubuntu20】VSCode Python代码规范工具配置 Pylint + Black + MyPy + isort
常用工具: 在 Ubuntu20 下,有以下常见的 Python 代码工具: 静态分析工具: Pylint 和 Flake8 功能范围:Pylint功能非常强大,能够检查代码质量、潜在错误、代码风格、复杂度等多个方面, 并生成详细的报…...

游戏提示错误:xinput1_3.dll缺失?四种修复错误的xinput1_3.dll文件
在计算机的运行过程中,我们可能会遇到各种各样的问题,其中与“xinput1_3.dll”相关的问题也并不罕见。“xinput1_3.dll”是一个在许多游戏和多媒体应用程序运行过程中可能会用到的动态链接库文件。当我们启动某些游戏时,可能会突然弹出一个错…...

YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路
YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 一、 模块介绍 论文链接:https://arxiv.org/abs/2303.16900 代码链接:https://github.com/sail-sg/inceptionnext 论文速览:受 ViT 长距离建模能力的启发,大核卷积…...
[Web安全 网络安全]-学习文章汇总导航(持续更新中)
文章目录: 一:学习路线资源 1.路线 2.资源 二:工具 三:学习笔记 1.基础阶段 2.进阶阶段 四:好的参考 五:靶场 博主对网络安全很感兴趣,但是不知道如何取学习,自己一步一步…...
Docker Compose部署Rabbitmq(Docker file安装延迟队列)
整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...

SpringBoot+FileBeat+ELK8.x版本收集日志
一、准备环境 1、ElasticSearch:8.1.0 2、FileBeat:8.1.0 3、Kibana:8.1.0 4、logstach:8.1.0 本次统一版本:8.1.0,4个组件,划分目录,保持版本一致。 说明:elasticsearch和kib…...
本地模型导入ollama
文章目录 Modelfile模板导入到 ollama Modelfile模板 在本地模型目录下创建 Modelfile FROM ./qwen2.5-7b-instruct-q4_k_m.gguf# 设定温度参数为1 [更高的更具有创新性,更低的更富有连贯性] PARAMETER temperature 1 # 将上下文窗口大小设置为4096,这…...

scala Map训练
Map实训内容: 1.创建一个可变Map,用于存储图书馆中的书籍信息(键为书籍编号,值为包含书籍名称、作者、库存数量的元组),初始化为包含几本你喜欢的书籍信息。 2.使用 操作符添加两本新的书籍到图书馆集合中。 3.根据书籍编号查询某一本特定的书籍信息&…...
WorkFlow源码剖析——Communicator之TCPServer(下)
WorkFlow源码剖析——Communicator之TCPServer(下) 前言 系列链接如下: WorkFlow源码剖析——GO-Task 源码分析 WorkFlow源码剖析——Communicator之TCPServer(上) WorkFlow源码剖析——Communicator之TCPServer&…...

数据结构与算法分析:专题内容——动态规划2之例题讲解(代码详解+万字长文+算法导论+力扣题)
一、最长公共子序列 在生物应用中,经常需要比较两个(或多个)不同生物体的 DNA。一个 DNA 串由一串称为碱基(base)的分子组成,碱基有腺嘌呤、鸟嘌呤、胞嘧啶和胸腺嘧啶 4 种类型。我们用英文单词首字母表示 4 种碱基,这样就可以将一个 DNA 串…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...