Ground Sunlight

Windowsで作る - PHPプログラミングの開発環境

ユーザ用ツール

サイト用ツール


apricot:usage:ja:frontend

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:frontend [2020/08/27 19:22]
y2sunlight [テンプレート変数 $errors]
apricot:usage:ja:frontend [2020/09/10 23:27] (現在)
y2sunlight [Bladeの拡張]
行 17: 行 17:
   * [[apricot:usage:ja:validation|Apricot バリデーション]]   * [[apricot:usage:ja:validation|Apricot バリデーション]]
   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]   * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]
 +  * [[apricot:usage:ja:authentication|Apricot ユーザ認証]]
   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]
  
行 96: 行 97:
 </code> </code>
  
-render() 関数の2つの引数は View シングルトンのrun()メソッドに渡わたされ、テンプレートを介してHTMLをレンダリングし、その結果を使ってレンダーレスポンスを生成して返しています。ボイラープレート [[テンプレート変数$error|errors()]] については次項を参照して下さい。+render() 関数の2つの引数は View シングルトンのrun()メソッドに渡わたされ、テンプレートを介してHTMLをレンダリングし、その結果を使ってレンダーレスポンスを生成して返しています。ボイラープレート [[#テンプレート変数_errors|errors()]] については次項を参照して下さい。
  
 \\ \\
  
-==== テンプレート変数$errors ====+==== テンプレート変数 $errors ====
  
->TODO:+''$errors'' は ''render()'' ボイラープレートによって自動的に作られるテンプレート変数です。''$errors'' は ''errors()'' ボイラープレートによって取得されます。 
 + 
 +<code php> 
 +// テンプレート変数 $errors 
 +['errors' => errors()] 
 +</code> 
 + 
 +''errors()'' ボイラープレートはフラッシュに保存されている[[apricot:usage:ja:errors-logging#エラーバッグ]]を返します(このフラッシュデータの名前は 'errors' です)。''$errors'' はテンプレートの中で次のようにして使用されます: 
 + 
 +<code php> 
 +@if($errors->count()) 
 +    @foreach($errors as $key=>$value) 
 +         {{$value}}<br> 
 +    @endforeach 
 +@endif 
 +</code>
  
 \\ \\
行 250: 行 266:
 </code> </code>
  
-HTMLをエスケープしたくない場合は以下のように、''<nowiki>{!! !!}</nowiki>'' 表記を使います。これは [[https://github.com/maximebf/php-debugbar|DebugBar]] 用のヘッダーと本体部分をレンダリングしている例です。+HTMLをエスケープしたくない場合は以下のように、''<nowiki>{!! !!}</nowiki>'' 表記を使います。これは [[apricot:usage:ja:errors-logging#デバッグ出力]] 用のヘッダーと本体部分をレンダリングしている例です。
  
 <code php> <code php>
行 457: 行 473:
  
 CSRF対策用のトークンフィールドを出力するディレクティブです。セッションからCSRFトークンを取得して、hidden タイプの input 要素の中に設定しています。 CSRF対策用のトークンフィールドを出力するディレクティブです。セッションからCSRFトークンを取得して、hidden タイプの input 要素の中に設定しています。
 +
 +\\
 +
 +===== Bladeの拡張 =====
 +
 +Apricotで使用しているテンプレートエンジン [[https://github.com/EFTEC/BladeOne|BladeOne]] には、オプションの拡張ライブラリーとして ''BladeOneHtml'' があります。このライブラリーを使用すると、HTMLフォームが簡単に綺麗に作成できます。
 +
 +例:
 +<code>
 +@form()
 +    @input(type="text" name="myform" value=$myvalue)
 +    @button(type="submit" value="Send")
 +@endform()
 +</code>
 +
 +インストール方法や使い方は、以下を参照して下さい:
 +
 +  * https://github.com/eftec/BladeOneHtml
  
 \\ \\
行 546: 行 580:
 \\ \\
  
 +===== アセットファイルのバージョニング =====
  
 +通常のブラウザでは、静的なアセットファイル( ''.js'' , ''.css'' または画像ファイル)がキャッシュされる場合があります。これは、アプリケーションのアセットファイルを変更した場合に問題が発生するかもしれません。これを防ぐ手段をキャッシュ・バスティング( ''Cache Busting'' )と呼びます。
  
 +簡単なキャッシュ・バスティングの方法としては、アセットファイルのURLに現在日時をクエリー文字列として付加する方法があります。
 +
 +<code>
 +<link href="{{url('css/main.css').'?'.time()}}" rel="stylesheet">
 +<script src="{{url('js/main.js').'?'.time()}}"></script>
 +</code>
 +
 +しかし、この方法では、アクセスする度にブラウザがアセットファイルを取得してしまい、ブラウザのキャッシュ機構が上手く機能しません。従って、現在日時の代わりにアプリケーションのバージョン番号を付加すれば、この問題を解決することができます。これがアセットファイルのバージョニングです。
 +
 +Apricotではバージョニング用のボイラープレート [[apricot:usage:ja:utility#urlとパス|url_ver()]] 関数が用意さており、上のコードを以下のように変更することで、アセットファイルのバージョニングができます。
 +
 +<code>
 +<link href="{{url_ver('css/main.css')}}" rel="stylesheet">
 +<script src="{{url_ver('js/main.js')}}"></script>
 +</code>
 +
 +アプリケーションのバージョン番号は、[[apricot:usage:ja:config#環境設定|環境変数]] ''APP_VERSION'' から取得します。従って、アセットファイルのバージョニングを使用している場合は、アセットファイルを変更したら必ず ''APP_VERSION'' も変更する必要があります。
 +
 +\\
  
  
apricot/usage/ja/frontend.1598523760.txt.gz · 最終更新: 2020/08/27 19:22 by y2sunlight