我想将public
文件夹更改为public_html
,主要问题是某些命令和功能无效,因为它仍然指向public
。
我正在尝试使用laravel + vue来开发一个水疗中心。我通常将public
文件夹重命名为public_html
,这就是全部,但我知道我必须使用public_path
帮助器和console
,并使用{{1}文件夹也是。
我在laravel文档中使用npm run dev,但它会生成public
文件夹中的所有内容,而不是我已重命名的public
那么如何告诉控制台和public_html
助手在public_path
文件夹中做出魔术?
我正在使用Laravel 5.6,它是一个全新的项目,只有一个控制器和一个public_html
帮助器的视图,调用我希望链接此mix
的js。
答案 0 :(得分:2)
愿这可以帮到你。您可以覆盖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';
您必须将您的工匠cli更改写入根目录的工匠文件。
在Laravel中,如果检查辅助函数,那么包含if函数的每个函数都不存在,那么使用function_exists()
声明它在我们的例子中,我们已经声明了public_path函数并包含在Laravel自动加载文件之前,所以每个请求都首先执行我们的函数。
希望这可以帮到你。祝你好运。
答案 1 :(得分:1)
在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