亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

YiiFramework的入門知識點總結

2020-03-22 18:39:11
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了YiiFramework入門知識點,結合圖文形式總結分析了YiiFramework創建的具體步驟及使用的相關注意事項,需要的朋友可以參考下

本文總結了YiiFramework入門知識點。分享給大家供大家參考,具體如下:

創建Yii應用骨架

web為網站根目錄
yiic webapp /web/demo

通過GII創建model和CURD時需要注意

1、Model Generator 操作

即使在有表前綴的情況下,Table Name中也要填寫表的全名,即包括表前綴。如下圖:

2、Crud Generator 操作

該界面中,Model Class中填寫model名稱。首字母大寫。也可參照在生成model時,在proctected/models目錄中通過model generator生成的文件名。如下圖:

如果對news、newstype、statustype這三個表生成CURD控制器,則在Model Generator中,在Model Class中輸入:News、newsType、StatusType。大小寫與創建的文件名的大小寫相同。如果寫成NEWS或NeWs等都不可以。

創建模塊注意事項

通過GII創建模塊,Module ID一般用小寫。無論如何,這里填寫的ID決定main.php配置文件中的配置。如下:

 modules = array( admin = array(//這行的admin為Module ID。與創建Module時填寫的Module ID大寫寫一致 html' target='_blank'>class = application.modules.admin.AdminModule ,//這里的admin在windows os中大小寫無所謂,但最好與實際目錄一致。),

路由

system表示yii框架的framework目錄
application表示創建的應用(比如d:/wwwroot/blog)下的protected目錄。
application.modules.Admin.AdminModule
表示應用程序目錄(比如:d:/wwwroot/blog/protected)目錄下的modules目錄下的Admin目錄下的AdminModules.php文件(實際上指向的是該文件的類的名字)
system.db.*
表示YII框架下的framework目錄下的db目錄下的所有文件。

控制器中的accessRules說明

/** * Specifies the access control rules. * This method is used by the accessControl filter. * @return array access control rulespublic function accessRules() return array( array( allow , // allow all users to perform index and view actions actions = array( index , view ),//表示任意用戶可訪問index、view方法 users = array( * ),//表示任意用戶 array( allow , // allow authenticated user to perform create and update actions actions = array( create , update ),//表示只有認證用戶才可操作create、update方法 users = array( @ ),//表示認證用戶 array( allow , // allow admin user to perform admin and delete actions actions = array( admin , delete ),//表示只有用戶admin才能訪問admin、delete方法 users = array( admin ),//表示指定用戶,這里指用戶:admin array( deny , // deny all users users = array( * ),}

看以上代碼注釋

user: represents the user session information.詳情查閱API:CWebUser
CWebUser代表一個Web應用程序的持久狀態。
CWebUser作為ID為user的一個應用程序組件。因此,在任何地方都能通過Yii::app()- user 訪問用戶狀態

public function beforeSave() if(parent::beforeSave()) if($this- isNewRecord) $this- password=md5($this- password); $this- create_user_id=Yii::app()- user- //一開始這樣寫,User::model()- user- (錯誤) //$this- user- (錯誤) $this- create_time=date( Y-m-d H:i:s  else $this- update_user_id=Yii::app()- user-  $this- update_time=date( Y-m-d H:i:s  return true; else return false;}

getter方法或/和setter方法

 ?php * UserIdentity represents the data needed to identity a user. * It contains the authentication method that checks if the provided * data can identity the user.class UserIdentity extends CUserIdentity * Authenticates a user. * The example implementation makes sure if the username and password * are both demo . * In practical applications, this should be changed to authenticate * against some persistent user identity storage (e.g. database). * @return boolean whether authentication succeeds. private $_id; public function authenticate() $username=strtolower($this- username); $user=User::model()- find( LOWER(username)=? ,array($username)); if($user===null) $this- errorCode=self::ERROR_USERNAME_INVALID; else //if(!User::model()- validatePassword($this- password)) if(!$user- validatePassword($this- password)) $this- errorCode=self::ERROR_PASSWORD_INVALID; else $this- _id=$user-  $this- username=$user- username; $this- errorCode=self::ERROR_NONE; return $this- errorCode===self::ERROR_NONE; public function getId() return $this- }

model/User.php

public function beforeSave() if(parent::beforeSave()) if($this- isNewRecord) $this- password=md5($this- password); $this- create_user_id=Yii::app()- user- //====主要為此句。得到登陸帳號的ID $this- create_time=date( Y-m-d H:i:s  else $this- update_user_id=Yii::app()- user-  $this- update_time=date( Y-m-d H:i:s  return true; else return false;}

更多相關:

/*由于CComponent是post最頂級父類,所以添加getUrl方法。。。。如下說明:CComponent 是所有組件類的基類。CComponent 實現了定義、使用屬性和事件的協議。屬性是通過getter方法或/和setter方法定義。訪問屬性就像訪問普通的對象變量。讀取或寫入屬性將調用應相的getter或setter方法$a=$component- text; // equivalent to $a=$component- getText();$component- text= abc // equivalent to $component- setText( abc getter和setter方法的格式如下// getter, defines a readable property text public function getText() { ... }// setter, defines a writable property text with $value to be set to the propertypublic function setText($value) { ... }public function getUrl() return Yii::app()- createUrl( post/view ,array( id = $this- id, title = $this- title,}

模型中的rules方法

/* * rules方法:指定對模型屬性的驗證規則 * 模型實例調用validate或save方法時逐一執行 * 驗證的必須是用戶輸入的屬性。像id,作者id等通過代碼或數據庫設定的不用出現在rules中。 * @return array validation rules for model attributes.public function rules() // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array( news_title, news_content , required ), array( news_title , length , max = 128), array( news_content , length , max = 8000), array( author_name, type_id, status_id,create_time, update_time, create_user_id, update_user_id , safe ), // The following rule is used by search(). // Please remove those attributes that should not be searched. array( id, news_title, news_content, author_name, type_id, status_id, create_time, update_time, create_user_id, update_user_id , safe , on = search ),}

說明:

1、驗證字段必須為用戶輸入的屬性。不是由用戶輸入的內容,無需驗證。
2、數據庫中的操作字段(即使是由系統生成的,比如創建時間,更新時間等字段——在boyLee提供的yii_computer源碼中,對系統生成的這些屬性沒有放在safe中。見下面代碼)。對于不是表單提供的數據,只要在rules方法中沒有驗證的,都要加入到safe中,否則無法寫入數據庫。

yii_computer的News.php模型關于rules方法

/** * @return array validation rules for model attributes.public function rules() // NOTE: you should only define rules for those attributes that // will receive user inputs. return array( array( news_title, news_content , required ), array( news_title , length , max = 128, encoding = utf-8 ), array( news_content , length , max = 8000, encoding = utf-8 ), array( author_name , length , max = 10, encoding = utf-8 ), array( status_id, type_id , safe ), // The following rule is used by search(). // Please remove those attributes that should not be searched. array( id, news_title, news_content, author_name, type_id, status_id , safe , on = search ),}

視圖中顯示動態內容三種方法

1、直接在視圖文件中以PHP代碼實現。比如顯示當前時間,在視圖中:

 ?php echo date( Y-m-d H:i:s ? 

2、在控制器中實現顯示內容,通過render的第二個參數傳給視圖

控制器方法中包含:

$theTime=date( Y-m-d H:i:s $this- render( helloWorld ,array( time = $theTime));

視圖文件:

 ?php echo $time;? 

調用的render()方法第二個參數的數據是一個array(數組類型),render()方法會提取數組中的值提供給視圖腳本,數組中的 key(鍵值)將是提供給視圖腳本的變量名。在這個例子中,數組的key(鍵值)是time,value(值)是$theTime則提取出的變量名$time是供視圖腳本使用的。這是將控制器的數據傳遞給視圖的一種方法。

3、視圖與控制器是非常緊密的兄弟,所以視圖文件中的$this指的就是渲染這個視圖的控制器。修改前面的示例,在控制器中定義一個類的公共屬性,而不是局部變量,它是值就是當前的日期和時間。然后在視圖中通過$this訪問這個類的屬性。

視圖命名約定

視圖文件命名,請與ActionID相同。但請記住,這只是個推薦的命名約定。其實視圖文件名不必與ActionID相同,只需要將文件的名字作為第一個參數傳遞給render()就可以了。

DB相關

$Prerfp = Prerfp::model()- findAll( array( limit = 5 , order = releasetime desc );
$model = Finishrfp::model()- findAll( array( select = companyname,title,releasetime , order = releasetime desc , limit = 10foreach($model as $val){ $noticeArr[] = 在 .$val- title. 競標中, .$val- companyname. 中標。 }
$model = Cgnotice::model()- findAll ( array( select = status,content,updatetime , condition = status = :status , params = array( :status = 0), order = updatetime desc , limit = 10foreach($model as $val){ $noticeArr[] = $val- content;}
$user=User::model()- find( LOWER(username)=? ,array($username));
$noticetype = Dictionary::model()- find(array( condition = `type` = noticetype ));
// 查找postID=10 的那一行$post=Post::model()- find( postID=:postID , array( :postID = 10));

也可以使用$condition 指定更復雜的查詢條件。不使用字符串,我們可以讓$condition 成為一個CDbCriteria 的實例,它允許我們指定不限于WHERE 的條件。例如:

$criteria=new CDbCriteria;$criteria- select= title // 只選擇 title 列$criteria- condition= postID=:postID $criteria- params=array( :postID = $post=Post::model()- find($criteria); // $params 不需要了

注意,當使用CDbCriteria 作為查詢條件時,$params 參數不再需要了,因為它可以在CDbCriteria 中指定,就像上面那樣。

一種替代CDbCriteria 的方法是給find 方法傳遞一個數組。數組的鍵和值各自對應標準(criterion)的屬性名和值,上面的例子可以重寫為如下:

$post=Post::model()- find(array( select = title , condition = postID=:postID , params = array( :postID = 10),));

其它

1、鏈接

 span >

具體查找API文檔:CHtml的link()方法

 span >

具體請查找API文檔:CController的createUrl()方法

以上兩個連接效果等同

組件包含

一個示例:

在視圖中底部有如下代碼:

 ?php $this- widget ( Notice ? 

打開protected/components下的Notice.php文件,內容如下:

 ?phpYii::import( zii.widgets.CPortlet class Banner extends CPortlet protected function renderContent() $this- render( banner }

渲染的視圖banner,是在protected/components/views目錄下。

具體查看API,關鍵字:CPortlet

獲取當前host

Yii::app()- request- getServerName();//and$_SERVER[ HTTP_HOST $url = http:// .Yii::app()- request- getServerName(); $url .= CController::createUrl( user/activateEmail , array( emailActivationKey = $activationKey));echo $url;

關于在發布新聞時添加ckeditor擴展中遇到的情況

$this- widget( application.extensions.editor.CKkceditor ,array( model = $model, # Data-Model attribute = news_content , # Attribute in the Data-Model height = 300px , width = 80% , filespath = Yii::app()- basePath. /../up/ , filesurl = Yii::app()- baseUrl. /up/ , );

echo Yii::app()- basePath

如果項目目錄在:d:/wwwroot/blog目錄下。則上面的值為d:/wwwroot/blog/protected。注意路徑最后沒有返斜杠。

echo Yii::app()- baseUrl;

如果項目目錄在:d:/wwwroot/blog目錄下。則上面的值為/blog。注意路徑最后沒有返斜杠。

(d:/wwwroot為網站根目錄),注意上面兩個區別。一個是basePath,一個是baseUrl

其它(不一定正確)

在一個控制器A對應的A視圖中,調用B模型中的方法,采用:B::model()- B模型中的方法名();

前期需要掌握的一些API
CHtml

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

關于Yii Framework框架獲取分類下面的所有子類的方法

以上就是YiiFramework的入門知識點總結的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文亚洲视频在线| 日韩av影视综合网| 国产精品久久久久久网站| 欧美亚洲国产日本| 日韩亚洲欧美中文在线| 91精品在线播放| 亚洲一区二区免费在线| 久久久久久久999精品视频| 国产精品美女网站| 国产精品人人做人人爽| 日韩在线视频一区| 日韩在线视频观看正片免费网站| 国产精品一二三在线| 日本一区二区在线播放| 国产精品人成电影| 中文国产亚洲喷潮| 久久久久久九九九| 亚洲精品电影网在线观看| 欧美综合激情网| 亚洲精品在线不卡| 亚洲免费av电影| 国产精品久久久久久婷婷天堂| 78m国产成人精品视频| 92版电视剧仙鹤神针在线观看| 国产精品日韩一区| 国产日产欧美a一级在线| 亚洲欧美一区二区三区四区| 综合136福利视频在线| 国产精品欧美日韩一区二区| 欧美日韩成人在线观看| 伦理中文字幕亚洲| 日本久久91av| 国产日韩av高清| 亚洲日本欧美中文幕| 亚洲第一区中文99精品| 日韩精品黄色网| 欧美高清自拍一区| 久久激情视频久久| 亚洲一区二区三区四区在线播放| 亚洲欧美日韩国产精品| 国产suv精品一区二区三区88区| 日韩在线观看免费| 国产成人久久久精品一区| 国产欧美精品一区二区三区介绍| 日韩成人在线观看| 欧美成人四级hd版| 亚洲丁香久久久| 亚洲午夜国产成人av电影男同| 欧美精品999| 国模视频一区二区三区| 色狠狠av一区二区三区香蕉蜜桃| 亚洲人成电影网站色www| 日产精品久久久一区二区福利| 九九视频直播综合网| 91中文字幕在线| 成人激情视频在线播放| 欧亚精品在线观看| 亚洲人成网站999久久久综合| 久久精品视频免费播放| 国产精品成人国产乱一区| 中文字幕在线日韩| 欧美激情综合亚洲一二区| 国产精品人人做人人爽| 欧美高清电影在线看| 亚洲欧美成人在线| 日韩高清av一区二区三区| 亚洲国产精品久久久久久| 亚洲性猛交xxxxwww| 亚洲精品免费网站| 91av国产在线| 91九色国产在线| 国产亚洲日本欧美韩国| 亚洲图片在线综合| 成人a级免费视频| 两个人的视频www国产精品| 国产女人18毛片水18精品| 欧美成人精品不卡视频在线观看| 亚洲精品www久久久久久广东| www.日本久久久久com.| 欧美日本黄视频| 日韩一区二区欧美| 国产精品99久久久久久白浆小说| 国产视频观看一区| 国产精品久久久av| 欧美性xxxxhd| 96精品视频在线| 精品免费在线视频| 亚洲香蕉成视频在线观看| 国产又爽又黄的激情精品视频| 亚洲免费福利视频| 精品久久久久久久久久ntr影视| 欧美高清videos高潮hd| 欧美激情按摩在线| 97成人超碰免| 成人免费视频a| 国产日韩精品电影| 免费99精品国产自在在线| 91亚洲精品久久久久久久久久久久| 亚洲精品黄网在线观看| 精品国产91久久久| 最近2019中文免费高清视频观看www99| 亚洲无限乱码一二三四麻| 在线观看成人黄色| 国产成人av在线播放| 欧洲美女免费图片一区| 欧美午夜精品久久久久久久| 亚洲美女www午夜| 欧美视频中文在线看| 欧美午夜影院在线视频| 久久视频这里只有精品| 亚洲天堂男人天堂女人天堂| 琪琪第一精品导航| 91免费国产网站| 欧美精品一区三区| 日本精品久久久久影院| 久久国产精品久久久久| 欧美—级高清免费播放| 91最新在线免费观看| 亚洲人成毛片在线播放| 久久国产加勒比精品无码| 亚洲aⅴ日韩av电影在线观看| 亚洲аv电影天堂网| 欧美日韩ab片| 久久久噜噜噜久久中文字免| 亚洲人成网站免费播放| 国产精品久久久久久影视| 国产精品白丝jk喷水视频一区| 全色精品综合影院| 欧美日韩综合视频网址| 日韩电影在线观看中文字幕| 亚洲美女久久久| 日本久久久久亚洲中字幕| 亚洲精品视频中文字幕| 国产精品一区二区女厕厕| 亚洲午夜精品久久久久久性色| 亚洲国产欧美一区二区三区久久| 中文字幕在线日韩| 欧美日韩一区二区三区在线免费观看| 亚洲国产成人久久综合一区| 欧美国产第二页| 亚洲天堂网站在线观看视频| 人九九综合九九宗合| 日韩在线播放一区| 欧美日韩国产专区| 欧美一级黑人aaaaaaa做受| 亚洲福利在线播放| 中文字幕久久久av一区| 欧美日韩国产一中文字不卡| 国产精自产拍久久久久久| 国内伊人久久久久久网站视频| 欧美理论片在线观看| 97av在线视频免费播放| 欧美亚洲另类在线| 国产这里只有精品| 一区二区三区四区精品| 亚洲人成免费电影| 欧美日韩激情视频| 97国产精品视频人人做人人爱| 国产成人亚洲综合91| 尤物精品国产第一福利三区| 精品女同一区二区三区在线播放| 国产精品永久免费视频| 国产成人一区二区三区电影| 国产91九色视频|