更改公共目录laravel

时间:2018-06-09 02:39:48

标签: laravel vue.js laravel-mix

我想将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。

2 个答案:

答案 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

相关问题