Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:core:response-class

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:core:response-class [2020/05/05 09:57]
y2sunlight [ヘルバー関数]
apricot:core:response-class [2020/07/29 11:34] (現在)
tanaka [RedirectResponseクラス]
行 1: 行 1:
-> 編集中 
- 
------ 
- 
 ====== Apricot レスポンスクラス ====== ====== Apricot レスポンスクラス ======
  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-04 //  --- //[[http://www.y2sunlight.com|y2sunlight]] 2020-05-04 //
行 13: 行 9:
   * Apricot コア   * Apricot コア
     * [[apricot:core:top|Apricot コア作成の準備]]     * [[apricot:core:top|Apricot コア作成の準備]]
-    * [[apricot:core:applocation-class|Apricot アプリケーションクラス]]+    * [[apricot:core:application-class|Apricot アプリケーションクラス]]
     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]     * [[apricot:core:basic-class|Apricot 各種基本コアクラス]]
     * [[apricot:core:request-class|Apricot リクエストクラス]]     * [[apricot:core:request-class|Apricot リクエストクラス]]
     * Apricot レスポンスクラス     * Apricot レスポンスクラス
 +    * [[apricot:core:base-controller|Apricot ベースコントローラ]]
 +    * [[apricot:core:completion|Apricot コアの完成]]
   * [[apricot:app:top|Apricot アプリ]]   * [[apricot:app:top|Apricot アプリ]]
-  * [[apricot:app:ext|Apricot 拡張]] +  * [[apricot:ext:middleware|Apricot 拡張]]
- +
-\\+
  
 HTTPレスポンスには以下の3ケースがあります。 HTTPレスポンスには以下の3ケースがあります。
行 41: 行 37:
 |hasFlash(string $key):bool|フラッシュデータの存在確認| |hasFlash(string $key):bool|フラッシュデータの存在確認|
 |addFlash(string $key, $value):Response|フラッシュデータの追加| |addFlash(string $key, $value):Response|フラッシュデータの追加|
-|commit()|レスポンスの確定|+|commit(int $response_code=null)|レスポンスの確定|
  
 {{fa>folder-open-o}} ** /apricot/core/Foundation ** {{fa>folder-open-o}} ** /apricot/core/Foundation **
行 121: 行 117:
     /**     /**
      * Commit Response Data      * Commit Response Data
 +     * @param int $response_code
      */      */
-    public function commit()+    public function commit(int $response_code=null)
     {     {
-        // Save old URL Path +        // Set Http response code 
-        $this->addFlash(self::FLASH_KEY_BACK, $_SERVER['REQUEST_URI']);+        if (isset($response_code)) 
 +        { 
 +            http_response_code($response_code); 
 +        }
  
         // Output headers         // Output headers
行 132: 行 132:
             header($header);             header($header);
         }         }
 +
 +        // Save old URL Path
 +        $this->addFlash(self::FLASH_KEY_BACK, $_SERVER['REQUEST_URI']);
  
         // Output flashes         // Output flashes
行 149: 行 152:
  
 ^メソッド^機能^ ^メソッド^機能^
-|_ _construct(string $html=null)|RenderResponseの生成|+|<nowiki>__</nowiki>construct(string $html=null)|RenderResponseの生成|
 |setHtml(string $html=null):RenderResponse|HTMLテキストの設定| |setHtml(string $html=null):RenderResponse|HTMLテキストの設定|
-|commit()|レスポンスの確定| +|commit(int $response_code=null)|レスポンスの確定|
- +
-<fs small><fc #ff0000>※コンストラクタのアンダースコアにはWikiの都合上、空白を挿入しています</fc></fs>+
  
 {{fa>folder-open-o}} ** /apricot/core/Foundation/Response ** {{fa>folder-open-o}} ** /apricot/core/Foundation/Response **
行 176: 行 177:
      * @param array $variables      * @param array $variables
      */      */
-    public function _ _construct(string $html=null)+    public function __construct(string $html=null)
     {     {
         $this->setHtml($html);         $this->setHtml($html);
行 197: 行 198:
      * @see \Core\Foundation\Response::commit()      * @see \Core\Foundation\Response::commit()
      */      */
-    public function commit()+    public function commit(int $response_code=null)
     {     {
-        parent::commit(); 
- 
         // headersに'Content-type'がなければ出力する         // headersに'Content-type'がなければ出力する
         $matchs= preg_grep('/^content-type.*?:/i', $this->headers);         $matchs= preg_grep('/^content-type.*?:/i', $this->headers);
行 207: 行 206:
             $this->addHeader("Content-type: text/html; charset=utf-8");             $this->addHeader("Content-type: text/html; charset=utf-8");
         }         }
 +
 +        parent::commit($response_code);
  
         // HTMLのレンダリング         // HTMLのレンダリング
         echo $this->html;         echo $this->html;
 +        flush();
     }     }
 } }
行 216: 行 218:
 \\ \\
  
-==== RedirectResponseクラス ====+===== RedirectResponseクラス =====
  
 RedirectResponseクラスはResponseクラスから派生したリダイレクト用のクラスです。リダイレクトではフラッシュデータを使ってリダイレクト先のページにデータを送ることが多いので、フラッシュ用のメソッドが追加されています。RedirectResponseクラスは以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。 RedirectResponseクラスはResponseクラスから派生したリダイレクト用のクラスです。リダイレクトではフラッシュデータを使ってリダイレクト先のページにデータを送ることが多いので、フラッシュ用のメソッドが追加されています。RedirectResponseクラスは以下のメソッドを持ちます。addHeader()などのResponseクラスのメソッドも使用できます。
  
 ^メソッド^機能^ ^メソッド^機能^
-|_ _construct(string $url)|RedirectResponseの生成|+|<nowiki>__</nowiki>construct(string $url)|RedirectResponseの生成|
 |with(string $key, $value):RedirectResponse|フラッシュデータの追加| |with(string $key, $value):RedirectResponse|フラッシュデータの追加|
 |withInputs():RedirectResponse|入力データをフラッシュに追加する| |withInputs():RedirectResponse|入力データをフラッシュに追加する|
 |withErrors(ErrorBag $errorBag):RedirectResponse|エラーバッグをフラッシュに追加する| |withErrors(ErrorBag $errorBag):RedirectResponse|エラーバッグをフラッシュに追加する|
 |withOldErrors():RedirectResponse|前回のエラーバッグを次のフラッシュに転送する| |withOldErrors():RedirectResponse|前回のエラーバッグを次のフラッシュに転送する|
- 
-<fs small><fc #ff0000>※コンストラクタのアンダースコアにはWikiの都合上、空白を挿入しています</fc></fs> 
  
 以下は、レスポンスで使用するフラッシュデータのキーとその内容です。特に _old_inputs と errors はHTMLテンプレートで良く使用されます。 以下は、レスポンスで使用するフラッシュデータのキーとその内容です。特に _old_inputs と errors はHTMLテンプレートで良く使用されます。
行 237: 行 237:
  
 {{fa>folder-open-o}} ** /apricot/core/Foundation/Response ** {{fa>folder-open-o}} ** /apricot/core/Foundation/Response **
-<code php RenderResponse.php>+<code php RedirectResponse.php>
 <?php <?php
 namespace Core\Foundation\Response; namespace Core\Foundation\Response;
行 308: 行 308:
 \\ \\
  
-===== ヘルー関数 =====+===== ヘルー関数 =====
  
 レスポンス処理用のヘルパー関数を追加します。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。 レスポンス処理用のヘルパー関数を追加します。render()とredirect()はコントローラアクションで、その他はHTMLテンプレートでよく使われる関数です。
apricot/core/response-class.1588640248.txt.gz · 最終更新: 2020/05/05 09:57 by y2sunlight