yii 常用一些调用 (添加中)ITeye - 娱乐之横扫全球

yii 常用一些调用 (添加中)ITeye

2019-01-12 06:48:11 | 作者: 鸿云 | 标签: 调用,得到,当时 | 浏览: 2003

调用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()-  

在view中得到当时action的ID办法 :Yii::app()- getController()- getAction()-  

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-  

得到当时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 plaincopy
$cookie = new CHttpCookie(mycookie,this is my cookie); 
$cookie- expire = time()+60*60*24*30;  //有期限30天 
Yii::app()- request- cookies[mycookie]=$cookie; 


读取cookie:
[html] view plaincopy
$cookie = Yii::app()- request- getCookies(); 
echo $cookie[mycookie]- value; 

毁掉cookie:
[html] view plaincopy
$cookie = Yii::app()- request- getCookies(); 
unset($cookie[$name]); 

在控制器增加CSS文件或JAVASCRIPT文件
[php] view plaincopy
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 plaincopy
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-  
  $this- setState(title, $record- title); 
  $this- errorCode=self::ERROR_NONE; 
  } 
  return !$this- errorCode; 
  } 
  public function getId() 
  { 
  return $this-  
  } 



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

// 运用供给的用户名和暗码登录用户
[html] view plaincopy
$identity=new UserIdentity($username,$password); 
if($identity- authenticate()) 
  Yii::app()- user- login($identity); 
else 
  echo $identity- errorMessage; 


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


[html] view plaincopy
// 刊出当时用户 
Yii::app()- user- logout(); 

其间的user是yii的一个components.需求在protected/config/main.php中界说
[html] view plaincopy
user= array( 
  // enable cookie-based authentication 
  allowAutoLogin= true, 
  loginUrl = array(site/login), 
), 


YII FRAMEWORK中TRASACTION业务的运用
[html] view plaincopy
$model=Post::model(); 
$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 
  $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 plaincopy
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);  //显现省略号


CBREADCRUMBS简介~俗称:面包屑
功用介绍:zii.widgets 下的CBreadcrumbs类,其承继联系: CBreadcrumbs » CWidget »
CBaseController » CComponent .源代码方位:
framework/zii/widgets/CBreadcrumbs.php
面包屑类显现一个链接列表以标明当时页面在整个网站中的方位.
因为面包屑通常会出现在网站的近乎一切的页面,此插件最好在视图的layout中进行布置.
你能够界说一个breadcrumbs特点并且在布局文件中指派给(网站)根底控制器插件,如下所示:
[html] view plaincopy
$this- widget(zii.widgets.CBreadcrumbs, array( 
  links= $this- breadcrumbs, 
)); 
于是乎,你需求时,只需求在每个视图脚本中,指定breadcrumbs特点(就能够显现出网页导航了).
以上是官方供给的文档文件的介绍.
下面介绍视图文件中写法:

[html] view plaincopy
$this- breadcrumbs=array( 
  Users= array(index), 
  Create, 
  // 方式 :  key = value  key的方位相当于最终显现出来的a标签内的姓名, value则相当于a标签的href特点. 
  // Create表明当时页  故没有设置链接. 
); 

YII FRAMEWORK中验证码的运用
1.在controller中修正:
[html] view plaincopy
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 plaincopy
?php if(CCaptcha::checkRequirements()): ?  
div  
  ?php echo $form- labelEx($model,verifyCode); ?  
  div  
  ?php $this- widget(CCaptcha); ?  
  ?php echo $form- textField($model,verifyCode); ?  
  /div  
  div 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);

YII FRAMEWORK在WEB页面检查SQL句子装备
[html] view plaincopy
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 plaincopy
$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多对多相关条件
[html] view plaincopy
$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过滤不良代码
[html] view plaincopy
$purifier=new CHtmlPurifier; 
$purifier- options=array(HTML.Allowed= div); 
$content=$purifier- purify($content); 
或许
[html] view plaincopy
?php $this- beginWidget(CHtmlPurifier); ?  
...display user-entered content here... 
?php $this- endWidget(); ?  

显现yii的sql句子查询条数和时刻
在config/main.php中装备在log组件的routes中参加
[html] view plaincopy
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完成。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章