2015-04-04 39 views
12

Tôi đang sử dụng Laravel 5 và tôi muốn xuất bản CSS bootstrap CSS và JS vào thư mục công khai. tôi đã sử dụng để có được Composer twitter/gói bootstrap và phần đó đi OK, vì vậy các files tôi muốn bây giờ là trong vendor/twitter/bootstrap/quậnTài sản xuất bản Laravel 5

Nhưng tôi không thể có được nó để làm việc. Tôi nhận được 'Không có gì để xuất bản.' mỗi lần tôi thử.
Dưới đây là các bước tôi đã:

  • sử dụng thợ thủ công để tạo ra lớp: php artisan make:provider BootstrapServiceProvider

  • chỉnh sửa các boot() phương pháp trong lớp đó

  • cung cấp dịch vụ đăng ký trong config/app.php
    providers => [ ...
    'App\Providers\BootstrapServiceProvider',
    ],

Dưới đây là tập tin được tạo của tôi với lớp và nó được biên tập theo phương pháp 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() 
    { 
     // 
    } 

} 

Tôi đã thử:

php artisan vendor:publish --tag=public 
php artisan vendor:publish --tag=public --force 
php artisan vendor:publish 
php artisan vendor:publish --force 

Và cũng đã cố gắng loại bỏ với tham số thứ hai 'public' từ phương pháp khởi động().

Mỗi khi tôi nhận được Không có nội dung nào để xuất bản..

phương thức khởi động() thậm chí không được gọi. Tôi phải làm gì để làm cho nó hoạt động?
Có thể đặt một cái gì đó trong phương pháp register()? Ngay bây giờ chỉ là trống rỗng.
Hoặc một số bước khác?

Trả lời

9

Để trả lời câu hỏi của riêng tôi.

Sau khi cài đặt lại Laravel từ 5.0.26 đến 5.0.25 mọi thứ đã hoạt động.
Ngay cả sau khi cập nhật lại lên 5.0.26 và cao hơn nó vẫn hoạt động.

Tôi không biết tại sao nó không hoạt động trước khi cập nhật soạn nhạc.

Mọi thứ khác tương tự như trên trừ phương thức boot() phải được cố định để trỏ đến đúng đường dẫn nhà cung cấp khi gọi publishes().

cố định phiên bản của boot():

public function boot() 
{ 
    $this->publishes([ 
     __DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'), 
    ], 'public'); 
} 

Để tự động tất cả thêm các mục này trong nhà soạn nhạc.json theo scripts: phần dưới "post-install-cmd""post-update-cmd":

"scripts": { 
    "post-install-cmd": [ 
      "...", 
      "php artisan vendor:publish --tag=public --force" 
    ], 
    "post-update-cmd": [ 
      "...", 
      "php artisan vendor:publish --tag=public --force" 
    ], 
}, 
+0

Cảm ơn rất nhiều câu trả lời của bạn! – SpiderWan

1

Thiết con đường bên dưới làm việc cho tôi: (nhờ cho phần còn lại của câu trả lời)

public function boot() 
{ 
    $this->publishes([ 
    vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'), 
    ], 'public'); 
} 
1

Điều này cũng có thể do bộ nhớ cache cấu hình gây ra. nếu bạn có được điều này kinda lỗi, sử dụng php thợ thủ công cấu hình: rõ ràng

và thử lại nhà cung cấp thợ thủ công php: xuất bản

3

Làm thế nào để cài đặt Bootstrap trong Laravel sử dụng nhà soạn nhạc

Mặc dù nó đã được một năm kể từ này câu hỏi đã được đăng, tôi tin rằng câu trả lời của tôi sẽ giúp ai đó ở ngoài đó. Điều này làm việc hoàn hảo cho tôi.

Tôi đang sử dụng Laravel Framework phiên bản 5.2.31 (làm php artisan --version để kiểm tra phiên bản Laravel của bạn). Thực hiện theo các bước bên dưới:

  1. Mở thiết bị đầu cuối và chạy composer require twbs/bootstrap 3.3.6. Nếu bạn muốn có phiên bản khác từ 3.3.6, hãy kiểm tra phiên bản phân phối mới nhất trên https://packagist.org/packages/twbs/bootstrap.
  2. Tạo lớp nhà cung cấp dịch vụ Bootstrap bằng lệnh nghệ thuật: php artisan make:provider BootstrapServiceProvider
  3. Mở lớp nhà cung cấp dịch vụ Bootstrap ở app/Providers/BootstrapServiceProvider.php. Chỉnh sửa các phương pháp boot() như sau:

    public function boot() { $this->publishes([base_path('vendor/twbs/bootstrap/dist') => public_path('vendor/bootstrap')],'public'); }

    Đoạn mã trên sẽ hướng dẫn artisan để sao chép thư mục vendor/twbs/bootstrap/dist-public/vendor/bootstrap.

  4. cung cấp dịch vụ đăng ký trong config/app.php bằng cách thêm DealerPortal\Providers\BootstrapServiceProvider::class, bên dưới danh sách của Ứng dụng cung cấp dịch vụ

  5. Run vendor:publish --tag=public --force để hoàn thành nhiệm vụ này.

Bonus bước:

Nếu bạn muốn tự động hoá quá trình xuất bản Bootstrap tất cả thêm php artisan vendor:publish --tag=public --force để post-install-cmdpost-update-cmd phần của tệp composer.json của bạn.