更改 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
我想将 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