2014-04-21 23 views
10

Tôi muốn sử dụng cấu hình nâng cao của Yii2 với giao diện người dùng, phụ trợ, ứng dụng phổ biến và giao diện điều khiển riêng biệt. Tôi có nhiều tài sản chung, bao gồm các tệp định kiểu, tệp js và phông chữ sẽ được sử dụng trong cả giao diện người dùng và ứng dụng phụ trợ. Nó chỉ có ý nghĩa sau đó để đưa những tài sản trong một thư mục tài sản chung.Yii2: Tài sản chung với Cấu hình nâng cao

Sau đó, việc bắt đầu quấy rối của tôi. Có vẻ như tôi cần một tệp AppAsset.php riêng để quản lý nội dung trong phần đầu và phần phụ trợ của ứng dụng tổng thể vì một số thứ sẽ khác nhau giữa hai phần. (Tôi không chắc chắn có nên tham khảo frontend, backend, vv như các ứng dụng riêng biệt trong một cái gì đó bao quát, hay gọi chúng là các ứng dụng con của một ứng dụng bao quát lớn.) Dù sao, có vẻ như tôi sẽ cần hai người quản lý AppAsset . Tôi sẽ xử lý tất cả các chuyển đổi tệp (ví dụ: scss → css) và nén tệp, vì vậy tôi không cần phải định cấu hình trình quản lý nội dung để thực hiện điều đó.

Thật không may, tài liệu trên AppAsset và gói nội dung không rõ ràng về cách bao gồm các tệp hoặc thư mục cụ thể trong một nhóm. Điều duy nhất tôi thấy là cách chỉ định đích bằng cách sử dụng các biến số $css, $js. Đối với các thư mục đầu vào, tôi chỉ thấy $ sourcePath. Điều đó có nghĩa là tôi phải tạo một gói riêng biệt (và $sourcePath) cho mọi tệp javascript, css, hình ảnh, v.v. Đó là toàn bộ rất nhiều gói! Chắc chắn có một số cách để bao gồm nhiều tệp nội dung trong một gói duy nhất. Ai đó có thể chỉ cho tôi như thế nào?

Trả lời

2

Tôi tin rằng mục đích của "gói" là cho phép bạn chọn các tệp bạn muốn.

Bạn không cần tạo gói khác cho từng tệp riêng lẻ.

Ví dụ, trong AssetManager tùy chỉnh siêu đơn giản của tôi, tôi có điều này:

namespace frontend\assets; 
use yii\web\AssetBundle; 
use yii\web\YiiAsset; 

class CustomAsset extends AssetBundle{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/custom.css', 
     'css/custom_modals.css' 
    ]; 
} 

Kể từ khi hai CSS folders/files được đặt tại lối vào phần của dự án của tôi và CustomAsset nằm ở đó quá, khi tôi đăng ký AssetManager này nó sẽ đi qua mảng $css và thêm chúng vào phần tiêu đề. Nó làm tương tự cho mảng $js mà bạn sẽ thêm nếu bạn cần. Ngoài ra, chỉ cần nhớ, các tệp cần phải ở trong một thư mục có thể truy cập web.

+3

Có, câu hỏi ban đầu của tôi xuất hiện trong những ngày đầu của Yii2 khi tài liệu rất kém. Nó đã được cải thiện, nhưng các tài liệu trên AssetManager vẫn còn nghèo. Tuy nhiên, tôi đã tìm ra nó. Nhân tiện, tài sản của bạn không được trong một thư mục có thể truy cập Web. AssetManager sẽ tự động xuất bản (sao chép) chúng vào thư mục/web/asset trong dự án của bạn. Tôi thực sự giữ tài sản ban đầu của mình trong phần tử \ asset cùng với các tệp Asset.php. – LarryTX

+0

Tuyệt! Cảm ơn Larry! Tôi không biết điều đó. – Schwoebel

Các vấn đề liên quan