目次
基本的な概要
1. デフォルトのコントローラー/メソッドを変更します
yii のビューもオブジェクト指向のアプローチを使用しているため、これが必要です。 CSS と JS ファイルを導入するための特別な方法。
use yii\helpers\Url;Url::to(['xxx/xxx']);//或Yii::$app->urlManager->createUrl('xxx.xxx')
ログイン後にコピー
" >
use yii\helpers\Url;Url::to(['xxx/xxx']);//或Yii::$app->urlManager->createUrl('xxx.xxx')
ログイン後にコピー
yii の QUERY クエリ ステートメント ビルダーは、モデルとコントローラーで使用できますが、モデルが に対応しない可能性があります。ただし、その構成は SQL ステートメントに近いため、Yii の組み込みルールに厳密に従わなくても、複雑な SQL ステートメントを簡単に作成できます。
メソッドは次のとおりです:
使用時にベース名前空間を適用し、yiihelpersXXX を使用してから、クラスを使用してベース静的メソッド XXX::YYY() を参照します
joinWith('Btable')が使えます->find(); クエリ時 検索時に関連するオブジェクトを検索する
ルールやシーンなどを設定します
ルールを設定しますモデル内のラベルとラベルは上記と同じです
$this->var=xxx; を定義し、$this->var を使用してレイアウト内で参照することもできます。
削除
モジュール内で Url::to() メソッドを使用して URL を作成すると、自動的にモジュール名を追加すると、他のモジュールにジャンプできなくなります。たとえば、Url::to(['//index/index.html) のように、文字列の前に「//」文字を追加できます。 '])は先頭アドレスへジャンプすることを意味します。
2. 変数を初期化する
注意: return true ステートメントはメソッドの最後に追加する必要があります。
あとは普通にJSファイル内で使用します。
次に、 Yii::$app->params['key'] を使用して、スクリプト内でそれを参照します。
6. コントローラーを使用してビュー ページをレンダリングする場合は、レンダリングの前に必ず echo または return を追加し、echo/return $this->render('view',$data);

yii2開発後記

Jun 23, 2016 pm 01:19 PM

数日前、自分のブログ用の 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 ファイルを使用し、その内部実装も主に使用される $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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

See all articles