我正在使用Laravel 5,我想将twitter bootstrap CSS和JS发布到公共目录。 我确实使用了Composer来获取twitter / bootstrap包,那部分没问题,所以我想要的文件现在在 vendor / twitter / bootstrap / dist
但我无法让它发挥作用。我得到'没什么可发表的。'我每次尝试都会留言 以下是我采取的步骤:
使用artisan生成课程:php artisan make:provider BootstrapServiceProvider
编辑该班级中的boot()
方法
在config / app.php中注册服务提供商
providers => [
...
'App\Providers\BootstrapServiceProvider',
],
Bellow是我生成的文件及其编辑的boot()
方法。
BootstrapServiceProvider.php
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class BootstrapServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
* Move twitter bootstrap CSS and JS into public directory
*
* @return void
*/
public function boot()
{
$this->publishes([
__DIR__ . 'vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
我试过了:
php artisan vendor:publish --tag=public
php artisan vendor:publish --tag=public --force
php artisan vendor:publish
php artisan vendor:publish --force
还尝试从boot()方法中删除第二个'public'
参数。
每次我无需发布。。
boot()方法甚至没有被调用。
我该怎么办才能让它发挥作用?
也许在register()
方法中加入一些东西?现在只是空的
或者其他一些步骤?
答案 0 :(得分:9)
回答我自己的问题。
将Laravel从5.0.26重新安装到5.0.25后,一切正常 即使再次将其更新到5.0.26及更高版本,它仍然有效。
我不知道为什么在作曲家更新之前它没有工作。
其他所有内容与上述内容相同,但在调用boot()
时必须修复publishes()
方法以指向正确的供应商路径。
boot()
的固定版本:
public function boot()
{
$this->publishes([
__DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
要自动执行此操作,请在&#34; post-install-cmd&#34; 和&#34;发布后的scripts:
部分的composer.json中添加此条目-update-CMD&#34; :
"scripts": {
"post-install-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
"post-update-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
},
答案 1 :(得分:3)
如何使用composer
在Laravel中安装Bootstrap虽然这个问题发布已经过去了一年,但我相信我的回答会帮助那些人。这对我很有用。
我正在使用Laravel Framework版本5.2.31(执行php artisan --version
检查您的Laravel版本)。请按照以下步骤操作:
composer require twbs/bootstrap 3.3.6
。如果您想要3.3.6的其他版本,请查看https://packagist.org/packages/twbs/bootstrap上的最新发行版本。php artisan make:provider BootstrapServiceProvider
在app/Providers/BootstrapServiceProvider.php
中打开您的Bootstrap服务提供程序类。编辑boot()
方法,如下所示:
public function boot()
{
$this->publishes([base_path('vendor/twbs/bootstrap/dist') => public_path('vendor/bootstrap')],'public');
}
上述代码将指示artisan
将目录vendor/twbs/bootstrap/dist
复制到public/vendor/bootstrap
。
在应用程序服务提供商
DealerPortal\Providers\BootstrapServiceProvider::class,
,在config / app.php中注册服务提供商
运行vendor:publish --tag=public --force
以完成此任务。
加分步骤:
如果您要自动执行发布Bootstrap的过程,请将php artisan vendor:publish --tag=public --force
添加到post-install-cmd
文件的post-update-cmd
和composer.json
部分。
答案 2 :(得分:1)
设置下面的路径对我有用:(感谢答案的其余部分)
public function boot()
{
$this->publishes([
vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
答案 3 :(得分:1)
这也可能是由配置缓存引起的。如果你得到这种错误,请使用php artisan config:clear
并重试php artisan vendor:publish