Создание более короткой ссылки для папки с изображениями - PullRequest
1 голос
/ 29 мая 2019

Я создал новые диски для образов в своем проекте и хочу использовать URL, который я добавил на диск userImage, в моем представлении в blade.php.

Диск отлично работает в моем контроллере, я использую его, чтобы определить, существует ли путь к папке, если нет, я создаю его:

if (!Storage::disk('userImage')->has('standard')) {
     Storage::disk('userImage')->makeDirectory('standard');
}

Но я хочу использовать это также в моем просмотре страницы blade.php, сейчас я использую:

(C: \ xampp \ htdocs \ rps \ public \ storage \ images \ userImage \ standard \ default.png)

src="{{asset('storage/images/userImage/standard/default.png')}}"

Код выше работает отлично, он отображает изображение, но я хочу сократить его до:

src="{{asset('userImage/standard/default.png')}}"

и я надеялся, что это сработает из-за того, как работает мой userImage диск, но это не так. У кого-нибудь есть идеи, как решить эту проблему?

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root' => storage_path('app'),
        ],

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

        'images' => [
            'driver' => 'local',
            'root' => storage_path('app/public/images'),
            'url' => env('APP_URL').'/images',
            'visibility' => 'public',
        ],

        'userImage' => [
            'driver' => 'local',
            'root' => storage_path('app/public/images/userImage'),
            'url' => env('APP_URL').'/userImage',
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
        ],

    ],

1 Ответ

0 голосов
/ 29 мая 2019

Ваш вопрос не ясен.

Если вы хотите более короткий img url:

Вы можете сделать символьную ссылку от public/userImage до storage/app/public/images/userImage.

  1. Добавьте ваш console.php в папку маршрутов.

    Artisan::command('link', function(){
        $this->laravel->make('files')->link(
            storage_path('app/public/images/userImage'), public_path('userImage')
        );
    });
    
  2. А затем консольная команда:

    php artisan link
    

Если вы хотите более короткий код (путь в блейде):

Вы можете создать свою собственную вспомогательную функцию.

  1. Создать файл приложения / Helpers / helpers.php

    function image($path){
        $path = trim($path, '/');
        return asset('storage/images/' . $path);
    }
    
  2. Добавить его в автозагрузку композитора

    "autoload": {
         "files": [
             "app/Helpers/helpers.php"
        ],
        "psr-4": {
             "App\\": "app/"
        },
        "classmap": [
             "database/seeds",
             "database/factories"
        ]
    },
    
  3. Используйте его в лезвии:

    {{ image('userImage/standard/default.png') }}
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...