YII框架的使用
spit: 吐痰,吐口水, 過去式: spat
spat: 自己也能夠做爲一個單詞, 意思是: 「小打小鬧」「小的吵鬧」「小爭吵」php
list函數,「列表」, 表示將數組中 對應的 元素值 相應的賦值給 多個變量...
explode和implode是在數組和字符串之間轉換, 轉換的分隔符不能爲空: 若是delimiter爲空, 則
會產生一個警告: empty delimiter...css
數組排序用sort, 數組倒序用array_reversehtml
yii 框架是美籍華人薛強開發的徹底免費開源的php框架. Qiang
yii 是 yes it is的首字母縮寫. yee. 讀做 yi: yee, easy extensible, efficient框架, 基於mvc設計模式. 純oop的
下載地址: http://www.yiiframework.com 中文社區是: http://www.yiichina.com前端
yii仍然是index.php單入口模式, 其中的view視圖層會跟 layout和一些小組件widget如treeview等交互.
而Controller控制器,則包括 Filter>atction等層次...jquery
yii的requirements目錄是環境檢測, 看服務器所在的環境是否知足yii的安裝環境...linux
yii對php 的版本要求仍是比較低的: 只要 php version > 5.1.0 就行了, 不少集成環境都可以知足.c++
cd framework/
yiic: yii_command, 是yii的命令行腳本, yiic是linux的shell腳本, yiic.php是yiic的php腳本, yiic.bat是yiic的windows腳本.web
asset
美 ['æset] 英 ['æset
建立的yii程序的目錄結構是: index.php是入口文件; assets是公共資源文件(asset['2set'] ), css, images, themes,
protected(最重要的就是這個目錄: 包括conf/main.php這個是主配置文件, controllers/這個是控制器目錄, models/是模型目錄,
views/是視圖目錄)..shell
兩種方案和思想, 一種是直接訪問localhost,把webapp直接放在localhost下, 另外一種是放在localhost下的子目錄中, 這樣的好處是, 能夠建立多個這樣的子程序web數據庫
views: 包括site/index.php, 和 layouts/main.php, 一個視圖文件就是按照layouts/main.php的佈局, 而後加上site/index.php中的內容組成的,
也就說, 最後生成的內容: layouts/是佈局/結構, site/index.php是內容.
熟悉了tp後, 來看yii就很容i了, 能夠用tp的思惟思想來學習yii, 反過來yii也能夠加深對tp的理解
注意, yii的目錄結構中的文件夾, 一般用的都是 "小寫的" "複數", 如:views/,contrllers/, models/, commands/, components/等等
控制器的名稱則是首字母大寫的, 默認的是 SiteController. 方法的命名規範是: actionIndex.
class MyController extends Controller{ public function index(){ print('hello yii') ; $this->render('index'); } } 這裏建立的是My控制器, 控制器文件名應該是: MyController.php,同時, 在views/目錄(注意是views目錄下, 不是site目錄! 那裏的site目錄是yii給咱們的默認的 一個SiteController控制器所對應的視圖文件夾), 下就應該有對應的文件夾my/. 注意控制器是首字母大寫的, 而views/"控制器對應的視圖目錄名" 是小寫的, 如這裏的 MyController控制器對應的視圖目錄就是: views/my/. 而後, my目錄下的文件如:index.php, do.php, login.php, article.php就是這個控制器類對應的方法名稱,如: funtion actionIndex function actionDo(), function actionLogin(). action的命名規則, 而對應的方法視圖文件要用小寫的! yii默認給咱們提供了一個Site控制器和site視圖子目錄, 是能夠直接使用的! 訪問的時候, 輸入的地址是: `localhost/yiidemo/index.php?r=Index/dosomething`, 其中r表示route路由, 後面跟上控制器名稱和操做方法.
渲染者: render+er: renderer.
當前的yii的穩定版是1.1.17
YiiBase類中的方法基本上都是靜態方法...public static function createWebApplication($config=null){ return self::createWebApplication($config);}
public和static的順序:
jquery的find查找方法
find就是查找當前正在處理的元素的後代元素的方法。find方法,由前面的選擇器指定選擇範圍,後面的find參數
指定選擇的內容。
實際上 $(parent).find(descend)
就等同於 $(parent descend)
html方法返回的是 元素的內容,(內部的東西) 元素自己的標籤是不包括的 ,如:
<p> <span> span text<strong> strong text</strong></span></p>, $('span').html(), 將會輸出: span text<strong> strong text</strong>, span自己的標籤並不輸出,即不會輸出:<span> span text<strong> strong text</strong></span>
鍵盤的選擇仍是以「柔和, 輕柔,柔軟」的爲好, 那種很硬,彈簧很硬的,質地很硬的很差...
strtr: r是replace替換的意思.
yiidemo 本身項目中的入口文件是: index.php, 它首先包含 framework框架中的yii.php, require_once $yii;
,
而後建立本身的應用程序: Yii::createWebApplication($config) -> run();
, 到此, web程序就運行起來了.
而yii.php是框架下的"入口文件", 它其實是一個Yii的類, 這個類又繼承自YiiBase類:
class Yii extends YiiBase {...}
最終, 由 YiiBase.php提供app的核心功能!
使用的都是Yii::createApplication($class, $config=null){ return new $class($config); }
, 返回的是一個類的對象實例;
根據這個class類名參數來決定是建立哪一種app, 若是$class是 "CWebApplication", "CConsoleApplication"...
頁面的標題, 如今能夠用函數來動態生成了, 只要使用pageTitle成員屬性: 就行了: $this-> pageTitle = Yii::app() -> name. ' - About' ;
當gii沒有權限的時候: 設置: module 設置gii的時候 不是本地的要設置容許IP 'allowedIPs' => ['127.0.0.1', '::1', '192.168.1.*', 'XXX.XXX.XXX.XXX']
gii is a magic tool that can write code for you . 是yii的自動生成 代碼 的工具.
在yii中使用gii, 只須要在protected/config/main.php中, 配置gii的模塊module便可..
設置默認的控制器: 在protected/config/main.php中, 加上: defaultController => 'Index';
, 並且默認的方法就是 index: function actionIndex()...
render中的layout主要是包含: 公共的 頭部和尾部...
$data = array('var1' => 10, 'var2' => 20); $this -> render('index', $data); 而後在模板中使用 <?php echo $var1; ?>
來輸出.<?php foreach($article as $v): ?> 注意foreach後是冒號, 不是分號或大括號; <li> <?php echo $v->title; ?>(這裏注意, 若是<?php中 , 只有一條語句, 那麼能夠不用加 分號!) </li> <?php endforeach; ?>
在protected/中建立一個functions.php文件(或func.php文件均可以, 反正後面要包含的). 而後在裏面寫上自定義函數.
使用時, 在 項目的入口文件 index.php中, 包含這個自定義函數文件: include_once './protected/functions.php';
沒必要只建立一個Index控制器,(雖然 你能夠將不少/甚至所有邏輯業務 , 都放在一個Index控制器中,) 可是, 爲了將業務邏輯分得更清楚一些, 也便於維護 , 能夠多建立幾個控制器,每一個業務邏輯(單元模塊功能),(甚至一個頁面 "生成器" ) 建立一個控制器..., 並且注意 名稱的大小寫, 有些大寫只是框架的命名規範所要求的. 其餘地方, 該用小寫的仍是用小寫.
使用模板佈局layouts的方法和步驟是:
這個控制器中, 有幾個 public的成員變量, $layout, $menu, $breadcumbs,
等, 這些能夠修改, 或者重載, public $layout = "//layouts/my"
<?php echo $content ?>
, 注意這個echo content 是放在佈局中的, 不是放在具體的模板中的.由於實際在渲染的時候, 是先讀取 佈局文件, (這就要求凡是使用佈局的 頁面的結構 應該是同樣的! ) 而後將佈局文件中的content用 實際模板中的內容來替換的.建立好本身的yii應用程序時, 裏面的 css和images和themes 是示例站點的資源. 若是你要 開發本身的web 程序, 這些文件夾(css, images, themes)能夠刪除不要.
若是你要寫了 $this->render('index');
那麼就必定要有views的對應模板文件, 不然就會報錯!
<?php echo Yii::app()->request->baseUrl ?>
獲得的就是 項目的目錄路徑.
==================
modules => array( 'gii'=>array(....) );
建立時, 是訪問的 index.php?r=gii, 建立完成後, 要訪問後臺模塊: index.php?r=admin/default/index (r=模塊id/控制器/方法). 並且後臺模塊也可使用前臺的佈局layouts.
$content
包含的內容中) 定義好 breadcurmbs 成員變量就行了, 不要什麼echo, print的, 輸出的語句是在其餘框架函數中.<?php $this -> breadcrumbs = array( $this->module->id, // 注意這裏要用字符串, 不能是 $this->module. 這個將會是一個模塊! 報錯 'other', 'other2'... ); ?> <h1> <?php echo $this->uniqueId. '/'. $this->action->id; ?> </h1>
最後生成的麪包屑導航格式是: Home (默認就是從Home開始的) >>(indicator就是相似兩個大於符號的) admin >> other >>other2( 所以, breadcrumbs的數組中, 有多少個元素, 就有多少級麪包屑導航級數...
$this
, 都是指的 當前的控制器! 要得到控制器的方法和module , 都直接使用 $this->action->id, $this->module->id;
而要得到類自己的名稱: 則要使用 get_class($this);
__FILE___
, 會把當前文件的 "完整路徑 / + 文件名" 都顯示出來.
一般 控制器 的 默認的 方法 都設置 設置 成 index方法: function actionIndex()..., 並且前臺的目錄項目名稱 一般也設置成 index, 後臺設置成 admin..
在視圖.php文件中 <?php $form = $this -> beginWidget('CActiveForm'); echo $form -> textFiled('LoginModelObj 表單模型', '表單域的名稱, 如usename, password等', '表單域的屬性組成的數組: array('id'=>'username'...) ); $this->endWidget(); ?> $form中的全部方法, 都是來自於 類CActiveForm的, 而後 , LoginModel extends CFormModel 其中, 模型要在 控制器方法中, 用new LoginModel() 的方式建立出來, 而後經過renderPatial的參數 傳遞到視圖文件中... 要注意, $form -> textFiled('model_name', 'form_field_name', array_attr) 中的 表單域的名字, 在相應的模型LoginModel中要有相應的 public 成員變量, ...