ホームページ  >  記事  >  バックエンド開発  >  Yii Framework 公式ガイド シリーズ 9 - 基本: ビュー

Yii Framework 公式ガイド シリーズ 9 - 基本: ビュー

黄舟
黄舟オリジナル
2017-02-11 09:38:401072ブラウズ



ビューは、主要なユーザー対話要素を含む PHP スクリプトです。これには PHP ステートメントを含めることができますが、これらのステートメントはデータ モデルを変更しないことをお勧めします。また、その単純さを維持することが最善です。見解として)。ロジックとインターフェイスを分離するには、ロジックの大部分をビューではなくコントローラーまたはモデルに配置する必要があります。

ビューには名前があり、レンダリング時にその名前はビュー スクリプト ファイルを識別するために使用されます。ビューの名前は、そのビュー スクリプトの名前と同じです。たとえば、ビューの名前 edit は、edit.php という名前のスクリプト ファイルから取得されます。レンダリングするには、CController を呼び出す必要があります。 :: ビューの名前を渡すことによって()。このメソッドは、protected/views/ControllerID ディレクトリで対応するビュー ファイルを検索します。ビュー スクリプト内で、$this->propertyName を使用してコントローラー インスタンスにアクセスするか、Get any を使用できます。 edit的名称出自一个名为 edit.php 的脚本文件.要渲染时如,需通过传递视图的名称调用 CController::render()。这个方法将在 protected/views/ControllerID 目录下寻找对应的视图文件.

在视图脚本内部,我们可以通过 $this 来访问控制器实例.我们可以在视图里以 $this->propertyName 的方式或取控制器的任何属性.

我们也可以用以下推送的方式传递数据到视图里:


$this->render('edit', array(
    'var1'=>$value1,
    'var2'=>$value2,
));

在以上的方式中, render() 方法将提取数组的第二个参数到变量里.其产生的结果是,在视图脚本里,我们可以直接访问变量$var1 和 $var2。

1. 布局

布局是一种用来修饰视图的特殊的视图文件.它通常包含了用户界面中通用的一部分视图.例如:布局可以包含header和footer的部分,然后把内容嵌入其间.


......header here......
<?php echo $content; ?>
......footer here......

其中的 $content 则储存了内容视图的渲染结果.

当使用 render() 时,布局被隐式应用。视图脚本 protected/views/layouts/main.php 是默认的布局文件.这可以通过改变 CWebApplication::layout 或者 CWebApplication::layout 进行自定义。要渲染一个不带布局的视图,则需调用renderPartial() 

2. 小物件

小物件是 CWidget 或其子类的实例.它是一个主要用于表现数据的组件。小物件通常内嵌于一个视图来产生一些复杂而独立的用户界面。例如,一个日历小物件可用于渲染一个复杂的日历界面。小物件使用户界面更加可复用。

我们可以按如下视图脚本来使用一个小物件:


<?php $this->beginWidget('path.to.WidgetClass'); ?>
...可能会由小物件获取的内容主体...
<?php $this->endWidget(); ?>

或者


<?php $this->widget('path.to.WidgetClass'); ?>

后者用于不需要任何 body 内容的组件。

小物件可通过配置来定制它的表现.这是通过调用 CBaseController::beginWidget 或 CBaseController::widget 设置其初始化属性值来完成的。例如,当使用 CMaskedTextField 小物件时,我们想指定被使用的 mask (可理解为一种输出格式),我们通过传递一个携带这些属性初始化值的数组来实现。这里的数组的键是属性的名称,而数组的值则是小物件属性所对应的值。正如以下所示 :


<?php
$this->widget('CMaskedTextField',array(
    'mask'=>'99/99/9999'
));
?>

继承 CWidget 并覆盖其init() 和 run() 方法,可以定义一个新的小物件:


class MyWidget extends CWidget
{
    public function init()
    {
        // 此方法会被 CController::beginWidget() 调用
    }

    public function run()
    {
        // 此方法会被 CController::endWidget() 调用
    }
}

小物件可以像一个控制器一样拥有它自己的视图。默认情况下,小物件的视图文件位于包含了小物件类文件目录的 views子目录之下。这些视图可以通过调用 CWidget::render() 渲染,这一点和控制器很相似。唯一不同的是,小物件的视图没有布局文件支持。另外,小物件视图中的$this指向小物件实例而不是控制器实例。

3. 系统视图

系统视图的渲染通常用于展示 Yii 的错误和日志信息。例如,当用户请求来自一个不存在的控制器或动作时,Yii 会抛出一个异常来解释这个错误, 这时,Yii 就会使用一个特殊的系统视图来显示此错误。

系统视图的命名遵从了一些规则。比如像 errorXXX 这样的名称就是用于渲染展示错误号 XXX 的 CHttpException 的视图。例如,如果 CHttpException 抛出一个 404错误,那么 error404 就会被显示。

在 framework/views 下, Yii 提供了一系列默认的系统视图。他们可以通过在 protected/views/system次のプッシュ メソッドを使用してビューにデータを渡すこともできます:


rrreee🎜🎜🎜 上記のメソッドでは、render() メソッドは配列パラメータの 2 番目の要素を抽出します。その結果、ビュー スクリプトで変数 $var1 と $var2 に直接アクセスできるようになります。 🎜

1. レイアウト

🎜 レイアウトは、ビューを変更するために使用される特別なビュー ファイルです。たとえば、レイアウトにはヘッダー部分とフッター部分が含まれます。を選択し、その中にコンテンツを埋め込みます。🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜 $content には、コンテンツ ビューのレンダリング結果が保存されます。🎜🎜 render() を使用する場合、レイアウトは暗黙的に適用済み。ビュー スクリプト protected/views/layouts/main.php はデフォルトのレイアウト ファイルです。これは CWebApplication::layout または CWebApplication::layout を変更することでカスタマイズできます。 レイアウトなしでビューをレンダリングするには、renderPartial() 🎜 を呼び出す必要があります。 🎜

2. ウィジェット

🎜 ウィジェットは、CWidget またはそのサブクラスのインスタンスであり、主にデータを表すために使用されるコンポーネントです。ウィジェットは多くの場合、複雑で独立したユーザー インターフェイスを作成するためにビューに埋め込まれます。たとえば、カレンダー ウィジェットを使用して、複雑なカレンダー インターフェイスをレンダリングできます。ギズモにより、ユーザー インターフェイスがより再利用可能になります。 🎜🎜次のようにウィジェットを使用できます: 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜 または 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜 後者は、本文コンテンツを必要としないコンポーネントに使用されます。 🎜🎜ウィジェットは、構成を通じてそのパフォーマンスをカスタマイズできます。これは、CBaseController::beginWidget または CBaseController::widget を呼び出して初期化プロパティ値を設定することによって行われます。たとえば、CMaskedTextField ウィジェットを使用する場合、使用するマスク (出力形式として理解できます) を指定するには、これらのプロパティの初期化値を含む配列を渡します。ここでの配列のキーは属性の名前であり、配列の値は小さなオブジェクトの属性に対応する値です。以下に示すように: 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜 CWidget を継承し、その init() メソッドと run() メソッドをオーバーライドして、新しいウィジェットを定義します: 🎜🎜🎜🎜🎜🎜rrreee🎜🎜🎜ウィジェットはコントローラーと同じように独自のビュー 🎜 を持つことができます。デフォルトでは、ウィジェットのビュー ファイルは、ウィジェット クラス ファイルが含まれるディレクトリの views サブディレクトリの下にあります。これらのビューは、コントローラーと同様に、CWidget::render() を呼び出すことでレンダリングできます。唯一の違いは、ウィジェットのビューがレイアウト ファイルをサポートしていないことです。さらに、ウィジェット ビューの $this は、コントローラー インスタンスではなくウィジェット インスタンスを指します。 🎜

3. システム ビュー

🎜 システム ビューのレンダリングは通常、Yii エラーとログ情報を表示するために使用されます。たとえば、ユーザーリクエストが存在しないコントローラーまたはアクションから来た場合、Yii はエラーを説明するために例外をスローします。このとき、Yii は特別なシステムビューを使用してエラーを表示します。 🎜🎜 システム ビューの命名は、いくつかのルールに従います。たとえば、errorXXX のような名前は、エラー番号 XXX の CHttpException を示すビューをレンダリングするために使用されます。たとえば、CHttpException が 404 エラーをスローした場合、error404 が表示されます。 🎜🎜framework/views の下で、Yii は一連のデフォルトのシステムビューを提供します。 これらは、protected/views/system 🎜 に同じ名前のビュー ファイルを作成することでカスタマイズできます。 🎜🎜上記は、Yii Framework 公式ガイド シリーズ 9 - 基礎知識: 内容の表示です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜🎜🎜🎜
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。