更改 public 目录 laravel

Change public directory laravel

我想将 public 文件夹更改为 public_html,主要问题是一些命令和功能不起作用,因为它仍然指向 public

我正在尝试使用 laravel+vue 开发水疗中心。我通常将 public 文件夹重命名为 public_html 仅此而已,但我知道我似乎必须使用 public_path 助手和 console 并且这些使用 public 文件夹。

我在 laravel 文档中使用 npm 运行 dev,但它会在 public 文件夹中生成所有内容,而不是在我重命名的 public_html

那么我如何告诉控制台和 public_path 助手在 public_html 文件夹中施展魔法?

我正在使用 Laravel 5.6,这是一个新项目,只有一个控制器和一个带有 mix 帮助调用我想要的 js link 这个 [=25] 的视图=].

希望这对您有所帮助。您可以覆盖 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 文件夹中。 要从基础覆盖帮助程序,您需要在 Laravel 执行它自己的自动加载文件之前包含您的帮助程序文件 (AppHelper.php)。

因此对于网络,您必须像这样将文件包含到 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';

您必须将您的 artisan cli 更改写入 root 上的 artisan 文件。

在 Laravel 中,如果您检查辅助函数,那么每个用 if 条件包装的函数都不存在,然后使用 function_exists()

声明它

在我们的例子中,我们已经声明了 public_path 函数并包含在 Laravel 自动加载文件之前,因此每个请求都首先执行我们的函数。

希望对您有所帮助。祝你好运。

将此添加到您的 AppServiceProvider 的 register() 方法中

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