CakePHP3でWeb家計簿 ⑳家計簿削除機能の作成 | ゆきみのWeb開発帳

ゆきみのWeb開発帳

IT系のSEもどきが、個人の勉強の為に、CakePHP3やPython3などでの開発記録を綴ります。
勉強不足な面もありますが、日々成長中です。

Web家計簿を、で構築した環境にアップすることを目標に、複数回に分けてWeb家計簿を作って行きます。

 

============================

CakePHP3でWeb家計簿 記事一覧

①基本設計

②usersテーブルの作成~bakeコマンド

③Security.saltの変更~DebugKitの非表示

④routes.phpの設定~default.ctpの編集

⑤User.phpの編集

⑥ログイン・ログアウト機能の作成

⑦ユーザー登録機能の作成

⑧トップページ表示機能の作成

⑨マイページ(ユーザー情報閲覧)機能の作成

⑩ユーザー情報編集機能の作成

⑪年月日を日本的な表記へ変更

⑫ユーザー情報登録・編集時のバリデーション

⑬退会機能の作成

⑭パスワード再設定機能の作成

⑮favicon(ファビコン)の配置

⑯accountsテーブルの作成~bakeコマンド

⑰家計簿登録機能の作成

⑱家計簿一覧機能の作成

⑲家計簿編集機能の作成

⑳家計簿削除機能の作成 ←現在の記事

㉑家計簿登録・編集時のバリデーション

============================

 

 

今回は、家計簿削除機能の作成を行います。

 

 

手順1.家計簿削除メソッドの作成

作成したプロジェクト\src\Controller にある『AccountsController.php』を編集します。

 

class AccountsController extends AppController
{

  //他の処理・・・・・

 

    //家計簿削除
    public function delete($id = null)
    {
        $this->request->allowMethod(['post', 'delete']);
        
        //DB上書きフラグ
        $save_flag = true;
        
        //Authコンポーネントからユーザー情報を引継ぎ
        $id = $this->Auth->user('id');
        
        //自動遷移先
        $url = 'https://www.google.co.jp/';
        
        //テーブルから、PRIMARYキー(id)を元にユーザー情報を取り出す
        $user = $this->Users->find()->where(['Users.id' => $id])->first();
        
        //テーブルの各値をセット
        $status = $user->status;
        
        //論理削除などのフラグが立っていたら、自動遷移先に遷移する
        if($status != null){
            $save_flag = false;
            $this->Flash->error(__('このユーザーは現在使用できません。'));
            $this->redirect($url);
        }
        
        if(isset($this->request->data['id'])){
            $accountsid = intval($this->request->data['id']);
        }
        
        $account = $this->Accounts->get($accountsid);
        if ($save_flag == true && $this->Accounts->delete($account)) {
            $this->Flash->success(__('家計簿を削除しました。'));
        } else {
            $this->Flash->error(__('家計簿を削除できませんでした。'));
        }

        return $this->redirect(['action' => 'index']);
    }
}

 

次回記事では、家計簿登録・編集時のバリデーションを行います。