2016-09-19 23 views
8

Tôi gặp khó khăn trong việc thu hút đầu óc xung quanh các bố cục lưỡi liềm.Lưỡi Laravel - nhiều bố cục?

Tất cả các ví dụ và tài liệu trên internet (ví dụ: tài liệu về laravel: https://laravel.com/docs/5.3/blade hoặc hướng dẫn bằng video trên youtube) chỉ sử dụng một master.blade.php làm bố cục.

Có cách nào tốt nhất cho các dự án phức tạp hơn không?

Các loại nội dung sau đây được bao gồm trong dự án của tôi:

  • sản phẩm
  • loại
  • blog của
  • phân loại
  • nhà
  • hành chính
  • đăng nhập/auth

Tất cả các loại nội dung có bố trí khác nhau:

  • khác nhau/không sidebar
  • sidebar bên trái/phải
  • khác nhau tiêu đề
  • không/biểu ngữ trước khi nội dung
  • khác nhau/không có menu nào
  • khác nhau/không có breadcrumb

Vì vậy, tôi không biết gì tình hình ...

  1. tạo một file bố trí mới (ví dụ /views/layouts/product.blade.php) và mở rộng nó trong trang của tôi (trong /views/pages/product.blade.php với @extends ("layouts.product"))

... hoặc ...

  1. chỉ sử dụng một tệp bố cục chứa tất cả các loại khác nhau và triển khai chúng dưới dạng các phần trong tệp trang của từng loại.

Điều này khiến tôi phát điên và tôi không thể tìm thấy bất kỳ thứ gì có giá trị như thực hành tốt nhất để sử dụng bố cục hay không.

Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn!

+0

Bạn có thể sử dụng bố cục rất chung, sau đó sử dụng một số 'bao gồm' cho thanh bên và các phần khác – Hammerbot

Trả lời

3

Thực hành tốt là mở rộng một số bố cục chính và sau đó sử dụng @include@each để bao gồm thanh bên, chân trang, tiêu đề, xem biểu ngữ, v.v. Đôi khi bạn muốn sử dụng @if điều hành cho bao gồm điều kiện:

@if (condition) 
    @include('some.view') 
@else 
    @include('another.view') 
@endif 
5

Một cấu trúc bố trí có thể dễ dàng trở thành một mớ hỗn độn, đó là lý do tại sao nó được rất nhiều đề nghị để giữ bố trí và partials tổ chức trong một cấu trúc thư mục trực quan.Bằng cách đó, bạn sẽ đảm bảo rằng trong tương lai, khi ứng dụng của bạn phát triển, ứng dụng sẽ luôn sạch sẽ và có tổ chức. Nó cũng phụ thuộc vào loại dự án bạn đang làm việc trên. Tin tưởng rằng nó hay không, đôi khi cấu trúc thư mục khác nhau từ dự án đến dự án. Theo tôi biết, không có "thực hành tốt nhất" về cách tổ chức một thư mục layout cụ thể cho Laravel, nhưng đây là một ví dụ về cách tổ chức các dự án của tôi (và đã làm việc cho tất cả các ứng dụng Laravel của tôi) đó):

views/ 
├── v1/ 
│ ├── master 
| | ├── master-public.blade.php 
| | ├── master-admin.blade.php 
| | ├── master-user.blade.php 
| ├── components 
| │ ├── navigation 
| | | ├── public.blade.php 
| | | ├── admin.blade.php 
| | | ├── user.blade.php 
| | ├── headers 
| | ├── footers 
| ├── views 
| | ├── home 
| | ├── chat 
| | ├── order 
| | ├── reports 
| ├── partials 
| | ├── ads.blade.php 
| | ├── sidebar.blade.php 
| ├── public 
| | ├── registration.blade.php 
| | ├── login.blade.php 
├── v2/ 
└── v2.2/ 

Điều quan trọng nhất cần đề cập ở đây là bên trong thư mục lượt xem của tôi, tôi tạo thư mục trên mỗi tuyến đường mà tôi có trong ứng dụng của mình.

Ngoài ra, tôi tin rằng điều quan trọng là phải có thư mục mẹ phiên bản giao diện người dùng của webapp. Đôi khi, khi làm lại giao diện người dùng có xu hướng chỉ lưu các tệp trong cùng một thư mục, không tốt trong thời gian dài vì bạn sẽ có một tệp biển cho các phiên bản khác nhau của trang web trong cùng một thư mục.

Hy vọng điều này sẽ hữu ích!

Chúc mừng và chúc bạn may mắn!

+0

Thực sự thích phiên bản của giao diện người dùng làm thư mục mẹ. Bạn vẫn đang làm điều này một năm sau đó? –

+2

@PierreLeBot Trong sản xuất, tôi vẫn làm. Cách đặc biệt này để tổ chức các khung nhìn Blade của tôi hóa ra thực sự hữu ích cho việc thử nghiệm AB và phiên bản UI của chúng ta nói chung. Nếu tôi bắt đầu từ đầu và muốn dính vào cấu trúc này, cách tiếp cận tốt hơn là tạo một mô đun con git trong dự án Laravel chứa tất cả các thứ liên quan đến giao diện người dùng của tôi và cam kết mỗi phiên bản với một thẻ git. Bằng cách đó, bạn không phải sao chép/dán nhiều tệp trong mỗi phiên bản mới, làm cho kích thước ứng dụng của bạn nhỏ hơn nhiều. Hiện tại, tôi đang chuyển tất cả quan điểm của mình sang VueJS. Hi vọng điêu nay co ich! – idelara

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