メインコンテンツへスキップ

blocs/admin: プロフィール編集画面のカスタマイズ

blocs/admin: プロフィール編集画面のカスタマイズ

標準のプロフィール設定画面(ProfileController)は、ユーザー管理と同じ User モデル・UpdateTrait を使いつつ、ログインユーザー自身のみを編集対象とする実装例です。

前提条件: blocs/admin がインストール済みであること(No.1.1 参照)。

構成

要素 パス / クラス
コントローラー app/Http/Controllers/Admin/ProfileController.php
更新ロジック Trait app/Http/Controllers/Admin/UserUpdateTrait.php
テンプレート resources/views/admin/profile/
ビュープレフィックス admin.profile

ProfileControllerUserUpdateTraituse し、パスワード変更・role 集約などの共通処理を共有します。

ユーザー管理との違い

項目 ユーザー管理 プロフィール
編集対象 URL の $id 常に Auth::id()
role 変更 不可prepareUpdateTrait で除去)
更新後の遷移 一覧へ backIndex ホームへリダイレクト
見出し setupMenu() 標準 Menu::headline() でプロフィール固定
public function edit($id)
{
    return parent::edit(Auth::id());
}

UserUpdateTrait の主な処理

パスワード変更

role(複数 checkbox)

role[] 配列をタブ区切り文字列に変換して保存します(ユーザー管理と同じ形式)。

name の補完

name が空の場合は email を代用します。

ProfileController 固有のカスタマイズ

role フィールドの除外

protected function prepareUpdateTrait(&$requestData)
{
    unset($requestData['role']);
    // プロフィール画像 file の整形...
}

プロフィール画像(ai-upload)

file が空文字で送信された場合は null(削除)、値がある場合はそのまま保存します(No.5.5 参照)。

更新完了後の遷移

protected function outputUpdate()
{
    return redirect()->route('home')->with([
        'category' => 'success',
        'message' => lang('success:admin_profile_updated'),
    ]);
}

カスタマイズのヒント

自分用の設定画面を別途作る場合は、本実装をコピーして viewPrefix とルートを変更するのが最短です。