この記事はYiiFramework入門知識ポイントをまとめています。参考のために皆さんと共有してください。詳細は次のとおりです:
Yii アプリケーションのスケルトンを作成する
web は Web サイトのルート ディレクトリです
yiic webapp /web/demo
GIIを通じてモデルとCURDを作成するときは注意する必要があります
1.モデルジェネレーターの操作
テーブル接頭辞がある場合でも、テーブル名にはテーブルの完全な名前、つまりテーブル接頭辞を含む名前を入力する必要があります。以下に示すように:
2.クラッドジェネレーターの操作
このインターフェースでは、モデルクラスにモデル名を入力します。最初の文字を大文字にします。モデルを生成するときに、proctected/models ディレクトリ内のモデル ジェネレーターによって生成されたファイル名を参照することもできます。以下に示すように:
news、newstype、statustype の 3 つのテーブルの CURD コントローラーを生成する場合、モデル ジェネレーターで、モデル クラスに News、newsType、および StatusType と入力します。大文字と小文字は作成されたファイル名と同じです。 NEWSやニュースと書かれている場合はNGです。
モジュール作成時の注意事項
GII を通じてモジュールを作成する場合、モジュール ID は通常小文字です。いずれの場合も、ここに入力された ID によって main.php 構成ファイル内の構成が決まります。以下の通り:
リーリールーティング
system は yii フレームワークのフレームワーク ディレクトリを表します
application は、作成されたアプリケーションの下の保護されたディレクトリ (d:wwwrootblog など) を表します。
application.modules.Admin.AdminModule
アプリケーションディレクトリの下の modules ディレクトリの下の Admin ディレクトリにある AdminModules.php ファイルを表します (例: d:wwwrootblogprotected) (実際にはファイルのクラスの名前を指します)
システムデータベース*
YII フレームワークのフレームワーク ディレクトリ内の db ディレクトリ内のすべてのファイルを表します。
コントローラー内のaccessRulesの説明
リーリー上記のコードのコメントを参照してください。
user: ユーザーのセッション情報を表します。詳しくは、API: CWebUser
を参照してください。
CWebUser は、Web アプリケーションの永続的な状態を表します。
CWebUser は、ID user を持つアプリケーション コンポーネントとして機能します。したがって、ユーザー ステータス には、Yii::app()->user
getter メソッドまたは/および setter メソッド
リーリーモデル/User.php
リーリーその他の関連情報:
リーリーモデル内のルールメソッド
リーリー説明:
1. 検証フィールドはユーザーが入力した属性である必要があります。ユーザーが入力していないコンテンツは検証する必要がありません。
2. データベース内の操作フィールド (作成時間、更新時間、その他のフィールドなど、システムによって生成された場合でも、boyLee が提供する yii_computer ソース コードでは、システムによって生成されたこれらの属性は安全な場所に置かれません。参照)以下のコード)。 フォームで提供されていないデータについては、ルール メソッドで検証されていない限り、セーフに追加する必要があります。追加しないとデータベースに書き込むことができません。
yii_computer のルール メソッドに関する News.php モデル
リーリービューに動的コンテンツを表示する 3 つの方法
1. ビュー ファイルの PHP コードに直接実装します。たとえば、ビューに現在時刻を表示するには: コードをコピーします コードは次のとおりです:
2. 表示コンテンツをコントローラーに実装し、render
コントローラーメソッドには以下が含まれます:
リーリーファイルを表示:
コードをコピーします コードは次のとおりです:
呼び出された render() メソッドの 2 番目のパラメータのデータは配列 (配列型) です。 render() メソッドは配列内の値を抽出し、配列内のキーをビュー スクリプトに提供します。ビュースクリプトに指定されます。この例では、配列のキーは time、値は $theTime で、抽出された変数名 $time がビュー スクリプトで使用されます。これは、コントローラーからビューにデータを渡す方法です。
3. ビューとコントローラーは非常に近い兄弟であるため、ビュー ファイル内の $this は、このビューをレンダリングするコントローラーを参照します。前の例を変更し、値が現在の日付と時刻であるローカル変数の代わりに、コントローラー内のクラスのパブリック プロパティを定義します。次に、ビュー内の $this を通じてこのクラスのプロパティにアクセスします。
命名規則を表示する
表示ファイル名はActionIDと同じにしてください。ただし、これは推奨される命名規則にすぎないことに注意してください。実際、ビュー ファイル名は ActionID と同じである必要はありません。ファイル名を最初のパラメータとして render() に渡すだけです。
DB関連
リーリー リーリー リーリー リーリー リーリー リーリー$condition を使用して、より複雑なクエリ条件を指定することもできます。文字列を使用する代わりに、$condition を CDbCriteria のインスタンスにすることができます。これにより、WHERE に限定されない条件を指定できます。例:
$criteria=new CDbCriteria; $criteria->select='title'; // 只选择'title' 列 $criteria->condition='postID=:postID'; $criteria->params=array(':postID'=>10); $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、链接
复制代码 代码如下:<?php echo CHtml::link(Controller::utf8_substr($val->title,0,26),array('prerfp/details','id'=>$val->rfpid),array('target'=>'_blank'));?>
具体查找API文档:CHtml的link()方法
复制代码 代码如下:<?php echo Controller::utf8_substr($val->title,0,26); ?>
具体请查找API文档:CController的createUrl()方法
以上两个连接效果等同
组件包含
一个示例:
在视图中底部有如下代码:
复制代码 代码如下:<?php $this->widget ( 'Notice' ); ?>
打开protected/components下的Notice.php文件,内容如下:
<?php Yii::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
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。