Laravel 5出版资产

时间:2015-04-04 07:06:57

标签: php twitter-bootstrap laravel-5

我正在使用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()方法中加入一些东西?现在只是空的 或者其他一些步骤?

4 个答案:

答案 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版本)。请按照以下步骤操作:

  1. 打开终端并运行composer require twbs/bootstrap 3.3.6。如果您想要3.3.6的其他版本,请查看https://packagist.org/packages/twbs/bootstrap上的最新发行版本。
  2. 使用artisan命令创建Bootstrap服务提供程序类:php artisan make:provider BootstrapServiceProvider
  3. 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

  4. 应用程序服务提供商

  5. 列表下方添加DealerPortal\Providers\BootstrapServiceProvider::class,,在config / app.php中注册服务提供商
  6. 运行vendor:publish --tag=public --force以完成此任务。

  7. 加分步骤:

    如果您要自动执行发布Bootstrap的过程,请将php artisan vendor:publish --tag=public --force添加到post-install-cmd文件的post-update-cmdcomposer.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