получить изображения из другого каталога - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть два laravel проекта на одном и том же сервере, подключенном к одной и той же базе данных на Cpanel, первый проект является основным, а другой - проектом субдомена. Я хочу просмотреть изображения для проекта поддоменов из папки изображений в основном проекте. Я попытался вернуться в каталог, но он не работал

 <img src="{{ url('../images/'.$item->image)}}">

, однако, когда я сохраняю изображения из проекта поддоменов в папке images в основном проекте, он работает хорошо. но я не могу вернуть их обратно к виду.

1 Ответ

1 голос
/ 07 февраля 2020

Хорошо - вот что вы можете сделать, чтобы это заработало.

Если у вас его еще нет, создайте свой собственный файл помощников и добавьте его в автозагрузку composer:

приложение / помощники. php

<?php

if (! function_exists('parentAsset')) {
    /**
     * Generate a parentAsset path for the application.
     *
     * @param  string  $path
     * @param  bool|null  $secure
     * @return string
     */
    function parentAsset($path, $secure = null)
    {
        return app('parentUrl')->asset($path, $secure);
    }
}

composer. json

{
    //...
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "files": [
            "app/helpers.php"
        ]
    },
    //...
}

Регистрация parentUrl в контейнере

app / Providers / AppServiceProvider. php

use Illuminate\Routing\UrlGenerator;

public function register()
{
    $this->app->singleton('parentUrl', function ($app) {
        $routes = $app['router']->getRoutes();

        $app->instance('routes', $routes);

        return new UrlGenerator(
            $routes,
            $app->rebinding('request', $this->requestRebinder()),
            $app['config']['app.parent_asset_url']
        );
    });
}

/**
 * Get the URL generator request rebinder.
 *
 * @return \Closure
 */
protected function requestRebinder()
{
    return function ($app, $request) {
        $app['url']->setRequest($request);
    };
}

Обратите внимание на новую запись конфигурации для app пространства имен: parent_asset_url. Теперь вам нужно добавить его в файл конфигурации app.php.

config / app. php

[

    //...
    'asset_url' => env('ASSET_URL', null),
    'parent_asset_url' => env('PARENT_ASSET_URL', null),
    //...

]

Наконец, вам нужно добавить PARENT_ASSET_URL переменная в ваш файл .env и укажите URL вашего родительского приложения.

PARENT_ASSET_URL=https://google.com

Перекомпилируйте автозагрузчик

composer dump-autoload -o

И теперь вы можете использовать помощник parentAsset для прямой загрузки файлов из родительского домена:

<img src="{{ parentAsset('/assets/images/logo.svg') }}">

Надеюсь, это поможет.

...