Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:usage:ja:http

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:usage:ja:http [2020/08/16 14:05]
y2sunlight [ボイラープレート]
apricot:usage:ja:http [2020/09/03 13:45] (現在)
y2sunlight [Apricot リクエストとレスポンス]
行 1: 行 1:
-> 編集中 
- 
----- 
- 
 ====== Apricot リクエストとレスポンス ====== ====== Apricot リクエストとレスポンス ======
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-07-29//  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-07-29//
行 15: 行 11:
   * Apricot リクエストとレスポンス   * Apricot リクエストとレスポンス
   * [[apricot:usage:ja:frontend|Apricot フロントエンド]]   * [[apricot:usage:ja:frontend|Apricot フロントエンド]]
-  * [[apricot:usage:ja:model|Apricot データベースモデル]]+  * [[apricot:usage:ja:database|Apricot データベース]] 
 +  * [[apricot:usage:ja:model|Apricot モデルとサービス]]
   * [[apricot:usage:ja:middleware|Apricot ミドルウェア]]   * [[apricot:usage:ja:middleware|Apricot ミドルウェア]]
   * [[apricot:usage:ja:controller|Apricot コントローラ]]   * [[apricot:usage:ja:controller|Apricot コントローラ]]
 +  * [[apricot:usage:ja:validation|Apricot バリデーション]]
 +  * [[apricot:usage:ja:provider|Apricot サービスプロバイダー]]
 +  * [[apricot:usage:ja:authentication|Apricot ユーザ認証]]
   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]   * [[apricot:usage:ja:utility|Apricot ユーティリティ]]
  
行 36: 行 36:
 \\ \\
  
-==== Input ====+==== Inputクラス ====
  
 Inputクラスはフォームの送信データを取得するシングルトンで、methodに従って、$_GETまたは$_POSTから生成されます。Inputクラスは後述のQueryStringクラスは同じく ''Apricot\Foundation\SimpleInput'' クラスをシングルトンにしたものです。 Inputクラスはフォームの送信データを取得するシングルトンで、methodに従って、$_GETまたは$_POSTから生成されます。Inputクラスは後述のQueryStringクラスは同じく ''Apricot\Foundation\SimpleInput'' クラスをシングルトンにしたものです。
行 59: 行 59:
 </code> </code>
  
-以下は、これを同じす。''get()'' は第2引数にデフォルト値を指定できます。+以下は、上の例と同じ結果になります。''get()'' は第2引数にデフォルト値を指定できます。
  
 <code php> <code php>
行 86: 行 86:
 \\ \\
  
-==== QueryString ====+==== QueryStringクラス ====
  
 QueryStringクラスはクエリ文字列を取得する為のシングルトンです。このクラスは''Apricot\Foundation\SimpleInput'' クラスをシングルトンにしたもので、$_GETから生成します。 QueryStringクラスはクエリ文字列を取得する為のシングルトンです。このクラスは''Apricot\Foundation\SimpleInput'' クラスをシングルトンにしたもので、$_GETから生成します。
行 105: 行 105:
 \\ \\
  
-==== Session ====+==== Sessionクラス ====
  
 Sessionクラスはセッション変数を設定及び取得をするシングルトンです。このクラスは ''Apricot\Foundation\SimpleSession'' クラスをシングルトンにしたもので、$_SESSIONから生成します。Sessionシングルトン後述するフラッシュデータを包含しています。 Sessionクラスはセッション変数を設定及び取得をするシングルトンです。このクラスは ''Apricot\Foundation\SimpleSession'' クラスをシングルトンにしたもので、$_SESSIONから生成します。Sessionシングルトン後述するフラッシュデータを包含しています。
行 151: 行 151:
 セッションには以下の設定ファイルが存在します。 セッションには以下の設定ファイルが存在します。
  
-{{fa>folder-open-o}} ** {your-project}/config/setting **+{{fa>folder-open-o}} ** /your-project/config/setting **
 <code php session.setting.php> <code php session.setting.php>
 <?php <?php
行 177: 行 177:
 \\ \\
  
-==== Flash ====+==== Flashクラス ====
  
 フラッシュとは、セッション内で一回限りだけ有効な[[#Session|セッション]]変数(次の画面の遷移のときまで保存される変数)のことです。Flashクラスはフラッシュ変数の設定及び取得を行うシングルトンで、''Apricot\Foundation\SimpleFlash'' クラスから作ります。 フラッシュとは、セッション内で一回限りだけ有効な[[#Session|セッション]]変数(次の画面の遷移のときまで保存される変数)のことです。Flashクラスはフラッシュ変数の設定及び取得を行うシングルトンで、''Apricot\Foundation\SimpleFlash'' クラスから作ります。
行 221: 行 221:
 \\ \\
  
-==== Cookie ====+==== Cookieクラス ====
  
 Cookieクラスはクッキーの設定及び取得を行うシングルトンで、''Apricot\Foundation\SimpleCookie'' クラスを使って実装します。 Cookieクラスはクッキーの設定及び取得を行うシングルトンで、''Apricot\Foundation\SimpleCookie'' クラスを使って実装します。
行 262: 行 262:
 クッキーには以下の設定ファイルが存在します。 クッキーには以下の設定ファイルが存在します。
  
-{{fa>folder-open-o}} **  {your-project}/config/setting **+{{fa>folder-open-o}} ** /your-project/config/setting **
 <code php cookie.setting.php> <code php cookie.setting.php>
 <?php <?php
行 355: 行 355:
 レスポンス処理用のボイラープレートには以下の関数があります。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。 レスポンス処理用のボイラープレートには以下の関数があります。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。
  
 +{{tablelayout?colwidth="350px"}}
 ^ヘルパー関数^機能^ ^ヘルパー関数^機能^
-|render\\ (string $view=null, array $variables=[])\\ :RenderResponse|RenderResponseの生成 \\ テンプレート名とテンプレート変数を指定します| +|render(string $view=null, array $variables=[])\\ :RenderResponse|RenderResponseの生成 \\ テンプレート名とテンプレート変数を指定します| 
-|redirect\\ (string $url)\\ :RedirectResponse|RedirectResponseの生成\\ リダイレクトURLを指定します| +|redirect(string $url):RedirectResponse|RedirectResponseの生成\\ リダイレクトURLを指定します| 
-|old\\ (string $key, $default = null)|キーを指定して前回の入力値を取得します|+|old(string $key, $default = null):string|キーを指定して前回の入力値を取得します|
 |back():string|前回のURIを取得します| |back():string|前回のURIを取得します|
 |errors():ErrorBag|前回のエラーバッグを取得します| |errors():ErrorBag|前回のエラーバッグを取得します|
  
-''render()'' は、テンプレート名(string)とテンプレート変数(array)を指定してHTMLをレンダリングしてRenderResponseオブジェクトを返す関数です。テンプレートについては、[[apricot:usage:ja:frontend#HTMLテンプレート]]を参照して下さい。+''render()'' は、テンプレート名(string)とテンプレート変数(array)を指定してHTMLをレンダリングしてRenderResponseオブジェクトを返す関数です。テンプレートについては、[[apricot:usage:ja:frontend#HTMLテンプレート]]を参照して下さい。以下の例では、ユーザモデルで全件検索した結果をテンプレート変数としてユーザ一覧を表示しています
  
 <code php> <code php>
 +/** index action */
 public function index() public function index()
 { {
行 370: 行 372:
     return render("user.index", ["users"=>$users]);     return render("user.index", ["users"=>$users]);
 } }
 +</code>
 +
 +以下は ''redirect()'' と ''back()'' の典型的な使用例です。フォーム送信を受け取るアクションでは、通常、バリデーションに失敗した場合は、前回の入力値とエラー内容と共に送信元のページに戻ります。以下の例では、redirect() の引数に back() で取得した前回のURIを指定し、RedirectResponse オブジェクトを得た後に、withInputs() と withErrors() メソッドを使って前回の入力値とエラー内容をフラッシュを使用してリダイレクト先に渡しています。
 +
 +<code php>
 +/** update action */
 +public function update()
 +{
 +    // バリデーション結果に応じてリダイレクトする
 +    if ($errorBag)
 +    {
 +        // 失敗した時
 +        return redirect(back())->withInputs()->withErrors($errorBag);
 +    }
 +
 +    // 成功した時
 +    return redirect(route("user/{$id}/edit"));
 +}
 +</code>
 +
 +''old()'' と''errors()'' はBladeテンプレートで良く使用される関数です。old() はフラッシュで渡された前回の入力値を取得する関数で、第2引数はデフォルト値です。以下はユーザ名の入力フィールドの例です。このように、データ編集ページの場合、通常は第2引数にはモデルから取得したテンプレート変数を渡します。
 +
 +<code php>
 +<input type="text" name="account" id="account" value="{{old('account',$user->account)}}">
 +</code>
 +
 +''errors()'' は、前ページからフラッシュで渡された[[apricot:usage:ja:errors-logging#エラーバッグ]]を取得する関数です。以下の例では、エラーバッグのcount()メソッドでエラーの数を取得し、エラーがあれば、その内容を出力しています。エラーバッグは[[https://www.php.net/manual/ja/class.iteratoraggregate.php|IteratorAggregateインターフェース]]を実装してるのでforeach()などのIteratorを使用した構文が使用できます。
 +
 +<code php>
 +@if($errors->count())
 +    @foreach($errors as $key=>$value)
 +        <div class="alert">{{$value}}</div>
 +    @endforeach
 +@endif
 </code> </code>
  
 \\ \\
  
apricot/usage/ja/http.1597554328.txt.gz · 最終更新: 2020/08/16 14:05 by y2sunlight