Kohana 3.0の紹介-パート2

Kohana PHP V3(KO3)を使用した開発記事シリーズの第2部をご覧ください。 まだ読んでいない場合は、最初にここにあります。 今回は、型(表現)の開発について説明します。

「application」ディレクトリで、新しい「views」フォルダを作成し、その中に「pages」フォルダを作成します。 エディタで新しいドキュメントを作成して貼り付けます:
< html >
<>
<タイトル>こんにちは!</タイトル>
</>
<本体>
< h1 >これが私の最初のビューです</ h1 >
</ body >
</ html >

これを「ko3.php」として「application / views / pages」ディレクトリに保存します。 これまでのところ、これは単純なHTMLコードですが、すぐに小さなPHPを追加します。 「ko3」(「アプリケーション/クラス/コントローラー/ ko3.php」コントローラー)を開きましょう。 action_indexメソッドを次のものに置き換えます。
パブリック 関数 action_index
{
$ this- > request- > response = View :: factory 'pages / ko3' ;
}

ファイルを保存し、ブラウザ「http:// localhost / mykohana3 / ko3」で開きます。 「これは私の最初のビューです」という行が表示されます。 上記のコードは非常に単純です。「View」クラスの「Factory」メソッドを使用して、「application / views / pages / ko3.php」ファイルをダウンロードし、視覚化(レンダリング)して表示します。 あまりエキサイティングではないので、ビュー(「application / views / pages / ko3.php」)に戻って、次を追加します。
<?php echo $ content ; ?>

タグ「h1」の後。 ビューは次のようになります。
<html>
<head>
<title>こんにちは!</ title>
</ head>
<本体>
<h1>これが私の最初のビューです</ h1>
<?php echo $ content ; ?>
</ body>
</ html>

ブラウザでページを更新すると、未定義の変数に関連するエラーが表示されます。 そこで、Action_Indexメソッドを次の形式にキャストして、これを修正しましょう。
パブリック 関数 action_index
{
$ view = View :: factory 'pages / ko3' ;
$ view- > content = 'データがあります!' ;
$ this- > request- > response = $ view- > render ;
}

そして今、ブラウザを更新すると、「これが私の最初のビューです」という碑文が表示され、その下に「データがあります!」と表示されます。 コードを1行ずつ見ていきましょう。
$ view = View :: factory 'pages / ko3' ;

この行は、ビュー(“ application / views / pages / ko3.php”)をコントローラーにロードします。
$ view- > content = 'データがあります!' ;

ここでは、変数「content」(ビューファイルで使用可能)を「We have data!」に設定します。
$ this- > request- > response = $ view- > render ;

render()メソッドはビューをレンダリングし、$ this-> request-> responseがそれを表示します。

簡単ですが、同じことを行う別の方法があります。
パブリック 関数 action_index
{
$ data [ 'content' ] = 'データがあります!' ;
$ view = View :: factory 'pages / ko3' $ data ;
$ this- > request- > response = $ view- > render ;
}

視覚化中に、フォーム内の変数は、対応するキーを持つ配列要素に置き換えられます。 この配列を「Factory」メソッドの2番目のパラメーターとして渡すことを忘れないでください。

しかし、それだけではありません! ビュー変数とコントローラーをバインドするには、他に2つの方法があります。
パブリック 関数 action_index
{
$ view = View :: factory 'pages / ko3'
-> set 'content' 'We have data!' ;

$ this- > request- > response = $ view- > render ;
}

ここでは、「View」クラスの「set」メソッドが使用されます。このメソッドを使用して、ビューで使用されるすべての変数を定義できます。
4番目の方法:
パブリック 関数 action_index
{
$ content = 'データがあります!' ;
$ view = View :: factory 'pages / ko3'
-> bind 'content' $ content ;
$ this- > request- > response = $ view- > render ;
}

上記では、「View」クラスの「bind」メソッドが使用されています。 フォームの変数に値を直接割り当てるのではなく、参照によってコントローラーの変数に関連付けるという点で、3番目のメソッドとは異なる「set」メソッドです。
つまり、これを行うと:
パブリック 関数 action_index
{
$ content = 'データがあります!' ;
$ view = View :: factory 'pages / ko3'
-> bind 'content' $ content ;
$ content = 'データが変更されました' ;
$ this- > request- > response = $ view- > render ;
}

その後、「We have data!」の代わりに「Our data changed」が画面に表示されます。

フォームでふりをしましょう! ディレクトリ「application / views /」に新しいフォルダ「blocks」を作成します。 エディターで新しいドキュメントを開き、その中に配置します。
< h3 >これは内部ビューです</ h3 >

これを、新しく作成した「application / views / blocks /」に「ko3_inner.php」として保存します。 次に、ビュー「ko3」(「application / views / pages / ko3.php」)を編集して、後に追加します。
<?php echo $ content ; ?>

次の行:
<?php echo View :: factory 'blocks / ko3_inner' -> render ; ?>

ビューは次のようになります。
<html>
<head>
<title>こんにちは!</ title>
</ head>
<本体>
<h1>これが私の最初のビューです</ h1>
<?php echo $ content ; ?>
<?php echo View :: factory 'blocks / ko3_inner' -> render ; ?>
</ body>
</ html>

ページを更新すると、以前に表示された碑文に「これは内部ビューです」が追加されます。 したがって、静的コンテンツを使用すると便利ですが、そのフォームで変数を直接使用することはできません。 これを修正するために、コントローラー(「application / classes / controllers / ko3.php」)に戻り、「Action_Index」メソッドを次の形式に戻します。
パブリック 関数 action_index
{
$ ko3_inner [ 'content' ] = 'さらにデータがあります' ;
$ ko3 [ 'content' ] = 'データがあります' ;
$ ko3 [ 'ko3_inner' ] =ビュー:: ファクトリー 'blocks / ko3_inner' $ ko3_inner
-> レンダリング ;
$ view = View :: factory 'pages / ko3' $ ko3 ;
$ this- > request- > response = $ view- > render ;
}

これにより、レンダリングされたビュー「blocks / ko3_inner.php」が$ ko3配列に配置され、メインビュー「pages / ko3.php」にレンダリングされます。これを変更する必要があります。 行:
<?php echo View :: factory 'blocks / ko3_inner' -> render ; ?>

前に追加したものに変更します。
<?php echo $ ko3_inner ; ?>

ビューは次のようになります。
<html>
<head>
<title>こんにちは!</ title>
</ head>
<本体>
<h1>これが私の最初のビューです</ h1>
<?php echo $ content ; ?>
<?php echo $ ko3_inner ; ?>
</ body>
</ html>

内部ビュー( "application / views / blocks / ko3_inner.php")を変更し、次のフォームに変更します:
<h3>これは内部ビューです</ h3>
<?php echo $ content ; ?>

ファイルを保存した後にブラウザーでページを更新すると、次のように表示されます。
これは私の最初のビューです

データがあります

これは内観です

さらにデータがあります

悪くはありませんが、より柔軟なビューを再利用する準備ができました。

次に、ビューで使用できるグローバル変数を作成する方法を学習します。 コントローラー(「アプリケーション/クラス/コントローラー/ ko3.php」)に戻り、「Action_Index」メソッドの最初に行を追加します。
表示:: set_global 'x' 'これはグローバル変数です' ;

メソッドを次のようにするには:
パブリック 関数 action_index
{
表示:: set_global 'x' 'これはグローバル変数です' ;

$ ko3_inner [ 'content' ] = 'さらにデータがあります' ;
$ ko3 [ 'content' ] = 'データがあります' ;
$ ko3 [ 'ko3_inner' ] =ビュー:: ファクトリー 'blocks / ko3_inner' $ ko3_inner
-> レンダリング ;
$ view = View :: factory 'pages / ko3' $ ko3 ;
$ this- > request- > response = $ view- > render ;
}

次に、ビューに追加する場合:
<br/> <?php echo $ x ; ?>

ページに「これはグローバル変数です」というテキストが表示されます。

「View :: bind_global」メソッドを使用してグローバル参照を作成することもでき、これらの変数は「View」オブジェクトのすべてのインスタンスで使用できます。

Source: https://habr.com/ru/post/J111382/


All Articles