Laravel-admin에서 화신을 숨기다

9275 단어 Laravel

하고 싶은 일


Laravel-admin을 입력하면 기본적으로 관리자에게 화신이 할당됩니다.
그리고 관리자 편집에서 이미지를 삭제하더라도 기본 설정

귀찮아서 끌게요.

방법


아래와 같이 관리자 사용자 테이블의 화신은 비어 있을 수 있으므로 문제없다
 Schema::create(config('admin.database.users_table'), function (Blueprint $table) {
            $table->increments('id');
            $table->string('username', 190)->unique();
            $table->string('password', 60);
            $table->string('name');
            $table->string('avatar')->nullable();
            $table->string('remember_token', 100)->nullable();
            $table->timestamps();
        });
다음은 관리자의 모형을 보면Administrator다음은 avatar 의 접근기를 정의한 것이다
따라서null라면laravel-admin 측에서 준비한 그림을 사용합니다
vendor/encore/laravel-admin/src/Auth/Database/Administrator.php
    /**
     * Get avatar attribute.
     *
     * @param string $avatar
     *
     * @return string
     */
    public function getAvatarAttribute($avatar)
    {
        if (url()->isValidUrl($avatar)) {
            return $avatar;
        }

        $disk = config('admin.upload.disk');

        if ($avatar && array_key_exists($disk, config('filesystems.disks'))) {
            return Storage::disk(config('admin.upload.disk'))->url($avatar);
        }

        $default = config('admin.default_avatar') ?: '/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg';

        return admin_asset($default);
    }
그래서 이 녀석을 편집할 거예요.app/Admin/Models/Administrator.php내용을 복사하여 다음과 같이 개작하다.또한 getPlainAvatarAttribute 의 접근기를 추가합니다.

    public function getPlainAvatarAttribute()
    {
        return $this->getOriginal("avatar");;
    }

    /**
     * Get avatar attribute.
     *
     * @param string $avatar
     *
     * @return string
     */
    public function getAvatarAttribute($avatar)
    {
        if (URL::isValidUrl($avatar)) {
            return $avatar;
        }

        $disk = config('admin.upload.disk');

        if ($avatar && array_key_exists($disk, config('filesystems.disks'))) {
            return Storage::disk(config('admin.upload.disk'))->url($avatar);
        }

        $default = config('admin.default_avatar') ?: null;

        return admin_asset($default);
    }
그리고 admin.phpEncore\Admin\Auth\Database\Administrator::class,(으)로 변경
만약 단지 이렇다면 화면에 그림이 없는 표지가 나타날 것이다
view에서도 만듭니다.App\Admin\Models\Administrator::class,병렬 저장 이름이 vendor/encore/laravel-admin/resources/views인 디렉터리를 만듭니다.resources/views/laravel-admin에 다음 문장을 추가하여view의 참조를 변경합니다.
app/Admin/bootstrap.php
app('view')->prependNamespace('admin', resource_path('views/laravel-admin'));
사이드바 및 헤더 수정
@if(Admin::user()->plainAvatar)
<img src="{{ Admin::user()->avatar }}" class="img-circle" alt="User Image">
@endif
여기까지.

좋은 웹페이지 즐겨찾기