Изменить публичный каталог laravel - PullRequest
0 голосов
/ 09 июня 2018

Я хочу изменить папку public на public_html, основная проблема в том, что некоторые команды и функции не работают, поскольку они по-прежнему указывают на public.

Я пытаюсь использовать laravel+ возможность развивать спа.Обычно я переименовываю папку public в public_html, и это все, но знаю, что мне нужно использовать помощник public_path и console, а также папку public.

Я использую npm, запустив dev как в laravel docs, но он генерирует все в папке public, а не в public_html, который я переименовал в

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

Я использую Laravel 5.6, это свежий проект, только с контроллером и представлением с помощником mix, вызывающим js, который я хочуссылка это <script src="{{ mix('js/app.js') }}"></script>.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Добавьте это в метод register () вашего AppServiceProvider

public function register()
{
    // Add this part
    $this->app->bind('path.public', function() {
        return base_path().'/public_html';
    });
}

Для ресурсов css + js, как сказал @Bagus Tesa, у вас есть файл с именем webpack.mix.js в корне папки вашего приложения.Это не ты, кто создал это, это идет с проектом Laravel.В этом файле вы найдете что-то вроде:

mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');

Изменить путь назначения с public на public_html

0 голосов
/ 09 июня 2018

Может это тебе поможет.Вы можете переопределить вспомогательные методы Laravel по умолчанию.Этот код помог мне в то время, когда у меня возникла такая же проблема, как у вас.

Просто я создал один вспомогательный файл и переопределил функцию public_html примерно так:

/**
 * Get the path to the public folder.
 *
 * @param  string  $path
 * @return string
 */
function public_path($path = '')
{
    return base_path().'/public_html';
}

Допустим, имя файла - AppHelper.php и находится в папке app / Http.Чтобы переопределить помощника из базы, вам нужно включить ваш файл помощника (AppHelper.php), прежде чем Laravel создаст свой собственный файл автозагрузки.

Таким образом, для Интернета вы должны включить свой файл в index.php следующим образом:

require __DIR__.'/../app/Http/AppHelper.php';

require __DIR__.'/../vendor/autoload.php';

Помните, что ваш помощник должен быть включен перед файлом автозагрузки.и этот фрагмент кода для командной строки или Artisan CLI:

require __DIR__.'/app/Http/AppHelper.php';

require __DIR__.'/vendor/autoload.php';

Вы должны записать свои изменения ремесленника в файл ремесленника, который находится в корневом каталоге.

В Laravel, если вы проверяете вспомогательную функцию, то каждая функция обернута, если условие, подобное этой функции, не существует, тогда объявите ее с помощью function_exists ()

В нашем случае мы уже объявили функцию public_path ивключается перед файлом автозагрузки Laravel, поэтому каждый запрос сначала выполняет нашу функцию.

Надеюсь, это поможет вам.Удачи.

...