cuốn sách gpt4 ai đã làm

php - Laravel Blade : @extend một lưỡi dao con (đã được mở rộng)?

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-10-31 22:53:01 25 4
mua khóa gpt4 Nike

Có ai biết liệu có thể mở rộng Blade con không?

Ứng dụng của tôi có một mẫu bố cục chung và sau đó mỗi trang @extends từ mẫu đó. Mỗi trang có thể giới thiệu một loạt @includes cho các khối HTML khác (chẳng hạn như các phương thức) nếu cần.

@extends('common.layout')

@section('nội dung')
... Một số nội dung khác...
@include('modals.modal-1')
@include('modals.modal-2')
@endsection

Tất cả các phương thức đều có rất nhiều mã soạn sẵn chung (Bootstrap), vì vậy điều tôi muốn làm là xác định một mẫu mô hình chính, có tất cả các phương thức @extend từ đó và sau đó @include những mã đó theo yêu cầu trong trang của tôi. Vì vậy /modals/modal-1.blade.php trông như thế này:

@extends('common.modals')

@section('modal-id', 'modal-1')
@section('modal-title','Tiêu đề phương thức')

@section('modal-body')
... Một số HTML/Blade ở đây ...
@endsection

Nhưng mỗi lần tôi thử, kết quả HTML đều bị hỏng. Trong trường hợp trên, modal-1 sẽ xuất hiện hai lần vì nó xuất hiện trước, trong khi modal-2 hoàn toàn không xuất hiện. Đảo ngược thứ tự và modal-2 sẽ xuất hiện hai lần.

Tôi nghĩ tôi có thể chỉ cần đặt phần thân phương thức vào một biến và sử dụng nó trong câu lệnh @include @include('modal.blade', ['body' => '

...
']) , nhưng sử dụng @extends thì đúng hơn.

Có ý tưởng gì không?

câu trả lời hay nhất

Bạn hoàn toàn có thể mở rộng Blade View từ Chế độ xem đã được mở rộng. Tuy nhiên, bạn đang kết hợp tính kế thừa mẫu với việc đưa vào Chế độ xem, điều này có thể dẫn bạn đến các kết quả lạ.

khi sử dụng @mở rộng Khi một lệnh kế thừa từ một mẫu, bạn phải luôn trả về phần tử con thấp nhất trong chuỗi mà bạn muốn. Giả sử bạn có 3 thế hệ mẫu:

//ông bà.blade.php

<đầu>
Ứng dụng của tôi


@yield('nội dung gốc')
Xem sitemap của VNExpress


//parent.blade.php
@extends('ông bà')

@section('nội dung gốc')

@yield('nội dung trẻ em')

@endsection

//child.blade.php
@extends('cha mẹ')

@section('nội dung con')

//chất liệu

@endsection

Trong trường hợp này, bạn sẽ trả về chế độ xem phụ cũng sẽ chứa hai thế hệ mẫu phía trên nó. Nhưng bạn có thểmãi mãitrở lạiparent.blade.php và mong đợi nó cũng trả lại lượt xem phụ đó. Có thể có 100 lượt xem phụ mở rộng Chế độ xem gốc, vì vậy không có cách nào để biết đó là lượt xem nào.

Sẽ @bao gồm Các chỉ thị được coi là một cách để chia nhỏ HTML trong Chế độ xem thành các phần nhỏ hơn. Thông thường, bạn sẽ sử dụng điều này cho các đoạn mã có thể sử dụng lại mà bạn muốn tham chiếu trong nhiều Chế độ xem. Tuy nhiên, nó khác với kế thừa mẫu. Ngoài ra, hãy nhớ rằng Chế độ xem chứa sẽ nhận được tất cả dữ liệu giống như Chế độ xem gốc của nó (thậm chí bạn có thể truyền nhiều dữ liệu hơn).

Trong trường hợp của bạn, bạn phải quyết định điều gì tạo nên phần gốc cơ bản của trang. Cốt lõi của trang làphương thức-1? Nếu vậy bạn cần quay lại từ Bộ điều khiển của mình phương thức-1 làm chế độ xem phụ của bạn và mở rộng nó lên trên. Trong trường hợp này, hãy giữ toàn bộ tệp trong bài viết của bạn. Chế độ xem gốc của nó (chung.modals) cần sửa thành:

@extends('common.layout')

@section('nội dung')
... Một số nội dung khác...

@yield('modal-id')
@yield('modals-title')
@yield('modal-body')

@include('modals.modal-2')
@endsection

Rõ ràng là bạn sẽ đặt mỗi tuyên bố lợi nhuận ở đâu đó trên trang một cách hợp lý.

Tuy nhiên, nếu phương thức-1 KHÔNGcốt lõi của trang và chỉ những nội dung bổ sung mà bạn muốn đưa vào (như tiện ích) thì bạn nên bao gồm Nó giống như những gì bạn làm trong Chế độ xem gốc. Trong trường hợp này bạn sẽ cần phải loại bỏ khỏi @extends chỉ thị và đừng bận tâm đến việc gói HTML chính vào bất kỳ phần nào. Nó sẽ được chuyển đến Chế độ xem nguyên trạng. Nếu bạn bao gồm các phần trong một mẫu có sẵn thì các phần đó phải được tạo trong Chế độ xem chứa mẫu đó. vậy bạn phương thức-1 Mẫu cuối cùng sẽ trông như thế này:


HTML ở đây Không cần phải mở rộng bất kỳ thứ gì hoặc gói gọn trong một phần.
Tuy nhiên, bạn vẫn có thể bao gồm {{$data}}.




@section('script')
Việc bao gồm phần này có nghĩa là chế độ xem bao gồm mẫu này
đã chứa lệnh @yield('script').
Bằng cách bao gồm lệnh @parent, phần này sẽ nối thêm lệnh đó.

@parent
@endsection

Về php - Laravel Blade : @extend a child Blade (đã được mở rộng)?, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/33344580/

25 4 0
Bài viết khuyến nghị: node.js - Python Flask và node.js
Bài viết khuyến nghị: Lỗi strtotime/date_create PHP khi chuyển đổi từ "j M, Y" sang "Ymd"
Bài viết khuyến nghị: Cài đặt Node.js không thành công. Nhật ký ở đâu?
Bài viết khuyến nghị: php - Lỗi tiêm (tiêm) phụ thuộc dịch vụ thử nghiệm Laravel
Hồ Xil
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Các bài viết phổ biến trên toàn bộ trang web
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com