簡體   English   中英

在Laravel 5中包括部分視圖的正確方法是什么?

[英]What is the proper way to include a partial view in Laravel 5?

我正在嘗試為我們的用戶創建一個表單來更新帳戶信息。 我構建了一個程序包,以便用戶可以創建自定義列表以從中選擇資格以顯示在其個人資料中。 我為自定義列表創建了一個局部視圖,該視圖遍歷該實體類型的所有列表,以獲取要在表單上顯示的列表。

我遇到的問題是,僅當我將@include()放在@section('content)區域中時,@ include()才起作用,但是隨后未顯示包含刀片中的其余內容,僅顯示了包含的內容。 如果我將include放在其自己的部分中,則不會顯示。

在與我的其余代碼相同的部分中包含include,如下所示:

@extends($layout)

@section('content')
<form>
     <label>Name</Label>
     <input type="text" name="first_name">

     <label>Last Name</Label>
     <input type="text" name="last_name">

     <label>Email</Label>
     <input type="text" name="email_address">
</form>
@include('Package::path.to.partial')
@endsection

結果如下:

<html>
     <body>
          <div class="container-fluid>
               <Partial Package Code>
          </div>
     </body>
</html>

如果我在自己的部分中包含了該內容,如下所示,則僅顯示“內容”部分中的內容:

@extends($layout)

@section('content)
<form>
     <label>Name</Label>
     <input type="text" name="first_name">

     <label>Last Name</Label>
     <input type="text" name="last_name">

     <label>Email</Label>
     <input type="text" name="email_address">
</form>
@endsection
@section('custom_list')
     @include('Package::path.to.partial')
@endsection

結果如下:

<html>
     <body>
          <div class="container-fluid">
                 <form>
                      <label>Name</Label>
                      <input type="text" name="first_name">

                      <label>Last Name</Label>
                      <input type="text" name="last_name">

                      <label>Email</Label>
                      <input type="text" name="email_address">
                 </form>
          </div>
     </body>
</html>

如果我在自己的部分中包含了內容,如下所示,則僅顯示“內容”部分中的內容

這是意料之中的。 您正在重新定義部分中的content部分,因此它將覆蓋該部分的內容。 相反,partials應該恰好是:partial內容。 因此,只需將所需的任何標記添加到部分Blade模板中,就像使用香草PHP一樣。

該包的局部視圖正在定義自己的@section('content')

在第一種情況下,程序包的content部分將覆蓋您的content 使用這樣的通用名稱的那個軟件包太糟糕了。

在第二個中,它不會顯示,因為您正在定義custom_list部分,但是不會在任何地方產生其內容。 您需要在布局模板中添加@yield('custom_list')

不幸的是,這仍然不能解決您的問題,因為content 命名沖突仍然存在

最好的選擇是將部分重命名為其他名稱。

@section('app')
    <... your fields ...>

    @include('Package::path.to.partial')

    @yield('content')
@stop

更新您的布局模板以產生新的部分名稱

@yield('app')

更好的是,派生該包,將其節名稱更改為[package_name]:content並提交拉取請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM