Ground Sunlight

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

ユーザ用ツール

サイト用ツール


apricot:app:user-edit

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
apricot:app:user-edit [2020/05/13 23:34]
y2sunlight
apricot:app:user-edit [2020/06/03 14:15] (現在)
tanaka [編集用のテンプレート]
行 17: 行 17:
     * [[apricot:app:validation|Apricot バリデーション]]     * [[apricot:app:validation|Apricot バリデーション]]
     * [[apricot:app:transaction|Apricot トランザクション]]     * [[apricot:app:transaction|Apricot トランザクション]]
-  * [[apricot:ext:top|Apricot 拡張]]+  * [[apricot:ext:middleware|Apricot 拡張]]
  
 [[apricot:app:user-list|ユーザ一覧画面]]に引き続き、ユーザ登録画面を作ります。本章の前にユーザ一覧画面もご覧下さい。尚、ルーティング設定に関しては既にユーザ一覧画面で終わっているので、[[apricot:app:user-list#ルーティング|そちら]]を参照して下さい。 [[apricot:app:user-list|ユーザ一覧画面]]に引き続き、ユーザ登録画面を作ります。本章の前にユーザ一覧画面もご覧下さい。尚、ルーティング設定に関しては既にユーザ一覧画面で終わっているので、[[apricot:app:user-list#ルーティング|そちら]]を参照して下さい。
行 47: 行 47:
     public function insert(array $inputs):ORM     public function insert(array $inputs):ORM
     {     {
 +        // 新規登録時、パスワードは必須
         // パスワード暗号化         // パスワード暗号化
         $inputs['password'] = password_hash($inputs['password'], PASSWORD_DEFAULT);         $inputs['password'] = password_hash($inputs['password'], PASSWORD_DEFAULT);
行 61: 行 62:
     public function update($id, array $inputs):ORM     public function update($id, array $inputs):ORM
     {     {
 +        // データ更新時、パスワードは入力した場合のみ変更
 +        if(empty($inputs['password'])) unset($inputs['password']);
 +
         // パスワード暗号化         // パスワード暗号化
         if(array_key_exists('password', $inputs))         if(array_key_exists('password', $inputs))
行 74: 行 78:
  
   * Modelクラスの insert() と update() をオーバーライドし、password を暗号化して保存します。   * Modelクラスの insert() と update() をオーバーライドし、password を暗号化して保存します。
 +  * update()では、パスワードは入力した場合のみ変更します。
  
 \\ \\
行 266: 行 271:
 ===== HTMLテンプレート ===== ===== HTMLテンプレート =====
  
 +ユーザ登録用のHTMLテンプレートは2つあります:
 +
 +  * 新規登録用 --- create.blade.php
 +  * 編集用 --- edit.blade.php
 +
 +Apricotでは出来るだけシンプルな実装を示すようにクライアント側のバリデーションは行っていません。必要に応じて追加してご使用下さい。尚、入力値のチェックは後述のサーバー側の[[apricot:app:validation|バリデーション]]で行います。
 +
 +また、以下のテンプレートでは、パスワードの確認入力がありません。これについても後述のバリデーションの章で追加する予定です。パスワードは新規登録時は必須入力ですが、更新時はパスワードを入力した場合のみ変更する仕様になっています。
 ==== 新規登録用のテンプレート ==== ==== 新規登録用のテンプレート ====
  
行 333: 行 346:
    
   * **ユーザ新規登録**   * **ユーザ新規登録**
-    * テンプレート変数 ''$users'' を使いユーザデータを表示しています。 +    * テンプレート変数 ''$user'' を使いユーザデータを表示しています。 
-    * ボイラープレート''old()''は 前回の入力値を取得する[[apricot:core:response-class#ヘルバー関数]]です。前回値が存在しない場合は、テンプレート変数 ''$users'' の値を表示します(前回値が存在するのはバリデーションなどのエラーが発生した場合だけです)。+    * ボイラープレート''old()''は 前回の入力値を取得する[[apricot:core:response-class#ヘルバー関数]]です。前回値が存在しない場合は、テンプレート変数 ''$user'' の値を表示します(前回値が存在するのはバリデーションなどのエラーが発生した場合だけです)。
     * [保存]ボタン押下で、フォームデータを ''route("user/insert")'' に送信します。     * [保存]ボタン押下で、フォームデータを ''route("user/insert")'' に送信します。
  
行 412: 行 425:
    
   * **ユーザ編集**   * **ユーザ編集**
-    * テンプレート変数 ''$users'' を使いユーザデータを表示しています。 +    * テンプレート変数 ''$user'' を使いユーザデータを表示しています。 
-    * ボイラープレート''old()''は 前回の入力値を取得する[[apricot:core:response-class#ヘルバー関数]]です。前回値が存在しない場合は、テンプレート変数 ''$users'' の値を表示します(前回値が存在するのはバリデーションなどのエラーが発生した場合だけです)。+    * ボイラープレート''old()''は 前回の入力値を取得する[[apricot:core:response-class#ヘルバー関数]]です。前回値が存在しない場合は、テンプレート変数 ''$user'' の値を表示します(前回値が存在するのはバリデーションなどのエラーが発生した場合だけです)。
     * 楽観的ロックを行う為にユーザデータの ''version_no'' を hidden で持っている点に留意して下さい。     * 楽観的ロックを行う為にユーザデータの ''version_no'' を hidden で持っている点に留意して下さい。
     * [保存]ボタン押下で、フォームデータを ''route("user/{id}/update")'' に送信します。     * [保存]ボタン押下で、フォームデータを ''route("user/{id}/update")'' に送信します。
行 495: 行 508:
  
 [{{apricot:app:app06.png?nolink}}] [{{apricot:app:app06.png?nolink}}]
-■ データを入力して[保存]ボタンを押します。+■ データを入力して[保存]ボタンを押します。\\ 
 ■ 保存に成功すると以下の画面が表示されます。 ■ 保存に成功すると以下の画面が表示されます。
  
 [{{apricot:app:app07.png?nolink}}] [{{apricot:app:app07.png?nolink}}]
-■ データを修正して[保存]ボタンを押します。+■ データを修正して[保存]ボタンを押します。\\ 
 ■ 保存に成功すると画面が更新されます。 ■ 保存に成功すると画面が更新されます。
  
 \\ \\
  
apricot/app/user-edit.1589380463.txt.gz · 最終更新: 2020/05/13 23:34 by y2sunlight