検索

数日前、自分のブログ用の CMS を書こうと考えていたときに、非常に強力と言われている Yii を思い出しました。バージョン2.0があることがわかったので、最新のものを試してみることにしました。 Yii2.0 は 2014 年 12 月にリリースされましたが、中国では使用している人が比較的少ないと思われ、問題が発生したときは罠にはまったと感じました。バージョン 1.0 については多くの回答が見つかったので、Google にアクセスして英語のサイトを確認する必要がありました。小さな問題については誰も私に気づかなかったので、私は自分で STACK OVERFLOW を実行し、ソース コードを調べましたが、それには 1 日以上かかりました。 。 。彼はとても苦しんだと言えるでしょう。

しかし、ウェブサイトがついに構築されました、アドレス: http://www.alwayscoding.cn。これからは、このサイトでブログが同時に更新され、お気に入りの記事を自由に投稿することもできます~~さらに、ソースコードは github にもあります。アドレスは https://github.com/zhenbianshu/blog-cms です。この CMS を使用したい場合は、サポートを提供します〜 最後に、次のこともまとめました。使用経験があり、yii2.0 を開始する準備ができています。見て、マークを残すことができます。

基本的な概要

1. デフォルトのコントローラー/メソッドを変更します

yii のデフォルトは、web.php の $config で 'defaultRoute'='xxxx' を設定して、カスタムのデフォルト コントローラーを使用できます。 Yii::$app->defaultRoute 属性をオーバーライドすることもできます。

yii のデフォルトのメソッドは、index です。これは、vender/yiisoft/yii2/base/Controller.php で最初に設定することも、コントローラーで defaltAction='action' を上書きすることもできます。

2. 独立したモジュールを追加する

yii は、追加が完了したら、web.php モジュール スイッチの $config に 'modules'=[id=..class=...] を設定します。 。

モジュールは通常、いくつかの独立した機能に使用されます。たとえば、私のサイトの admin モジュールは全体的なバックグラウンド ロジックを担当します。

3. モデル操作テーブルの設定

Yii のモデルには Model と ActiveRecord が含まれており、Model クラスは基本的なビジネス ロジックを処理するために使用され、同じ名前のデータ テーブルを操作したい場合は継承してください。 ActiveRecord クラス。

モデルフォルダーの Operation.class にある Operation クラスを使用して yiidbActiveRecord を継承し、Operation テーブルを操作します。

他のテーブルを操作したい場合は、パブリック $tableName 属性をオーバーライドして設定することもできます。または、その tableName メソッドを書き換えます (静的メソッドであることに注意してください): public static function tableName(){return 'tableName'}

4. ビュー レイヤの構成

yii のビュー レイヤは .php ファイルを使用し、その内部実装も主に使用される = LinkPager::widget(['pagination'=>$pagination]) ?> などの Yii 組み込みウィジェットの形式は、そのページング クラスを表します。

さらに、入力などのウィジェットは ActiveForm クラスを使用して表示されます。その一般的なウィジェットは yiiwidget クラスに配置されます。

5. レイアウト モード

yii はデフォルトでレイアウト モードを有効にし、そのレイアウト テンプレートは veder/yiisoft/yii2/web/controller で public $layout 属性を設定できます。 php 基本クラス テンプレートファイルの構成を変更します。

特定のレイアウトをオフにしたり、指定したりすることもできます:

    コントローラー内のコントロール public $layout=false/'layout'
  • コントローラーのメンバー メソッド内のコントロール $this->layout=false/'layout'
  • ビューでレイアウト $this->context->layout=false/'layout' を選択します
6. モデルの基本設定

yii のモデルは、MVC ロジックの処理を実行する MVC プロセッサーです。モデルの属性定義はそのコアです。マジック メソッド get/set がデフォルトで定義されているため、モデルの外部で $modle->attr='value' を直接呼び出して、モデルの属性を取得/割り当てることができます。

シーン設定

yii にはシーンの定義があり、シーンを定義すると、さまざまな状況で yii が異なるデータ情報を返すようになります。モデルの scenarios() メソッドを使用して、戻りデータを設定します。

モデルを使用するときは、シーン名 $model=new Model(['scenario'=>'login']); を渡してシーンを決定します。

ルール設定

yii での検証ルールの定義では、 rules() メソッドを使用して複数のルールを一度に定義したり、さまざまなシナリオに従って定義したりできます。外部検証の場合は、$model->validate() メソッドを使用して検証を実行します。

セーフ モードでは、セキュリティ検証が必要です。つまり、特定のルールがない場合は、ルールで各属性を検証する必要があります。また、「安全な」検証も追加する必要があります。そうしないと、検証が失敗し、データベースへの保存も失敗します。

ラベル設定

フォームを処理するときは、$model->attributes 属性を使用してすべての属性を表します。 AttributeLabels メソッドは、ビューレイヤー内の ActiveForm によって生成された各フォーム項目のラベルラベルを表すために使用される配列を返します

7. JS/CSS ファイルの参照

yii のビューもオブジェクト指向のアプローチを使用しているため、これが必要です。 CSS と JS ファイルを導入するための特別な方法。

  • $this->registerJsFile('js.js') を使用して js ファイルをインポートします。
  • $this->registerJsFile('js.js') を使用して js ファイルをインポートします。
  • //在模型中计算出总数量$count=$this->find()->where()->count();//用总条数和设定的每页个数实例化一个yii\data\Pagination类$page=new Pagination([totalCount' => $count,'defaultPageSize'   => 2,]);//使用分页类的属性搜索想要的数据,并返回数据$res=$this->find()->where()->offset($page->offset)->limit($page->limit)->all();return [$res,$page];//使用控制器渲染页面$data=$model->getData();return $this->render('index',$data);//在视图页面中使用数据。foreach($res as key)...yii\widgets\LinkPager::widget([pagination=$page,prevPageLabel='上一页'])。
9. URL を作成します

use yii\helpers\Url;Url::to(['xxx/xxx']);//或Yii::$app->urlManager->createUrl('xxx.xxx')

10 クエリ ビルダー

yii の QUERY クエリ ステートメント ビルダーは、モデルとコントローラーで使用できますが、モデルが に対応しない可能性があります。ただし、その構成は SQL ステートメントに近いため、Yii の組み込みルールに厳密に従わなくても、複雑な SQL ステートメントを簡単に作成できます。

メソッドは次のとおりです:

$res=(new yii\db\Query())->select()->from()->leftJoin()->where->()->all();

where ステートメントはより複雑です:

where('in','id',$array)或where('id'=>$array)

詳細については、http://www.yiichina.com/doc/guide/2.0/db- で where メソッドの分析を確認できます。クエリビルダー。

11. カスタム関数

yii のカスタム関数は、vendor/yiisoft/yii2/helpers/ フォルダーに作成し、新しい XXX.php ファイルを作成してから、カスタム クラスを定義し、静的メソッド YYY() を定義できます。 。

使用時にベース名前空間を適用し、yiihelpersXXX を使用してから、クラスを使用してベース静的メソッド XXX::YYY() を参照します

12. アソシエーション モデル

yii のアソシエーション モデルは、 current table の場合、該当するテーブルのレコードが取り出されます。例えば、テーブルAから情報が取り出されるたびに、テーブルAに対応する情報がテーブルBからも取り出され、ModelAにgetBtableメソッドが定義されます

rree

joinWith('Btable')が使えます->find(); クエリ時 検索時に関連するオブジェクトを検索する

$res->btable を使用してオブジェクトを直接参照することもできます。 。

$res[n]->btable->attr を使用して、テーブル B の対応する属性を参照します。

13. ActiveForm を使用してフォームを作成します

yii2 でウィジェットを使用してビューを作成する手順: モデルを設定し、そのプロパティを設定します

function getBtable(){    return $this->hasOne/hasMany(Btable::className,['bid'=>'aid']);}

ルールやシーンなどを設定します

public $username;public $password;

ラベルを設定します

public function rules(){    return [            [['username', 'password','conpass'], 'required'],            ['conpass', 'password',        ];}

次にコントローラーに、モデルのインスタンスがレンダリングされます:

public function attributeLabels(){        return [            'username' => '管理员',            'password' => '密码',        ];    }

最後に、ページで ActiveForm を使用します

$this->render('index',['model'=>(new Model/ActiveRecord)])

14. 検証コードを使用します

コントローラーに検証コードを設定するための独立したメソッド

use yii\widgets\ActiveForm;<?php $form = ActiveForm::begin([    'action' => ['log/login'],    'method'=>'post'    ]); ?>    <?= $form->field($model, 'username') ?>    <?= $form->field($model, 'password') ?>    <div class="form-group">        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>    </div><?php ActiveForm::end(); ?>

ルールを設定しますモデル内のラベルとラベルは上記と同じです

public function actions() {        return [            'captcha' =>  [                'class' => 'yii\captcha\CaptchaAction',                'height' => 50,                'width' => 80,                'minLength' => 4,                'maxLength' => 4            ],        ];    }

(captchaAction をコントローラー内の位置に設定する必要があります。モジュールをカスタマイズする場合は、モジュールを設定する必要があります) ビューで使用します

public function rules(){    return [['verifyCode', 'captcha','captchaAction'=>'admin/log/captcha'],];}

15. ビューでのブロックの使用

ブロックの内容は $this->beginBlock(['id'=> ;xxx]) と $this->endBlock() にあります。$view-> を使用します。レイアウトで参照する block[id]。ビュー データのテンプレートへのインポートを完了できます。

$this->var=xxx; を定義し、$this->var を使用してレイアウト内で参照することもできます。

16.更新と削除

更新

use yii\captcha\Captcha;<?= $form->field($model, 'verifyCode')->widget(Captcha::className(),    ['captchaAction'=>'log/captcha',        'imageOptions'=>        ['alt'=>'点击换图', 'style'=>'cursor:pointer']    ]) ?>

削除

//查找到一条结果$res=$this->find()->where()->one();//对结果修改$res->attr='xxx';//执行更新操作$res->update();

注意事項とヒント

1. URL モジュール間を移動

モジュール内で Url::to() メソッドを使用して URL を作成すると、自動的にモジュール名を追加すると、他のモジュールにジャンプできなくなります。たとえば、Url::to(['//index/index.html) のように、文字列の前に「//」文字を追加できます。 '])は先頭アドレスへジャンプすることを意味します。

2. 変数を初期化する

コントローラーでの各操作の前に変数を初期化する場合は、さまざまな変数を渡す必要があるため、__construct コンストラクターをオーバーライドしないでください。各アクションの実行時に実行される beforeAction() 関数を書き直すのが最善です。

注意: return true ステートメントはメソッドの最後に追加する必要があります。

3. JS で YII 変数を使用する

JS で YII URL 変数を使用したい場合は、初めてビューをレンダリングするときに HTML の script タグを使用して変数を事前解析し、次のコードを追加します。変数を使用する必要がある場所の前に。

//删除一条数据$this->findOne($id)->delete();//删除所有符合条件的数据$this->deleteAll([where]);

あとは普通にJSファイル内で使用します。

4. グローバル定数の定義

config フォルダーの params.php でグローバル定数を定義できます。

次に、 Yii::$app->params['key'] を使用して、スクリプト内でそれを参照します。

5. yii モデル属性を配列に変換する

YII は、toArray() メソッドを使用して、モデル属性を出力用の配列に変換します。これは、クエリ中に独立して使用することも、連続操作で使用することもできます。

6. コントローラーを使用してビュー ページをレンダリングする場合は、レンダリングの前に必ず echo または return を追加し、echo/return $this->render('view',$data);

7 の属性。ええ、覚えておいてください! ActiveForm では、データ テーブルにこのフィールドがある場合、public を使用して属性を宣言しないでください。属性に値を割り当てることができなくなります。 。 。 。 (血の涙)。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
アクション中のPHP:実際の例とアプリケーションアクション中のPHP:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境