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」オブジェクトのすべてのインスタンスで使用できます。



All Articles