簡體   English   中英

Laravel 4. *至5. *,將視圖嵌套在Controller中

[英]Laravel 4.* to 5.*, nesting views in Controller

截止到目前,我已經將Laravel運行環境更新為最新版本。 回到Laravel 4. *,我能夠執行以下操作:

$this->layout->content = View::Make('users.login');

但似乎現在失敗了。 我已經閱讀了很多文章,嘗試了所有看起來合理的事情,但我沒有發現任何適合我的情況的東西。 鏈接的嘗試的努力可以在這篇文章的底部找到。 以下是我嘗試使用的代碼。

我收到的錯誤來自“找不到類'App \\ Http \\ Controllers \\ View'”的錯誤-當我在控制器中添加Use View時可以解決此錯誤,但這會導致另一個錯誤。 添加使用View時,我收到的另一個錯誤是“試圖分配非對象的屬性”。 位。

基本思想是這樣的:

我有兩個視圖,一個是基本頁面布局(layouts.main),另一個包含希望嵌入到主布局中的用戶登錄名(user.login)。 它們都是刀片格式文件,如果嘗試這樣做,它們都彼此獨立加載,我根本無法將兩個文件嵌套在控制器下。 我正在嘗試執行此操作,以便主文件可以就是該文件,並且僅此內容部分在頁面視圖之間進行更改。

控制器功能:

public function getLogin() {
     $this->layout->content = View::Make('users.login');
}

刀片文件部分:

    <div class="content roundBorder wrapper">
        @yield($content)
    </div>

嘗試的解決方案:使用View :: make的所有操作似乎都由於deprecation(?)而失敗。 https://laravel.io/forum/03-19-2014-simply-loading-multiple-views

嘗試Laravel 4:在布局內部嵌套視圖,但要包含數據

return $layout->nest('content','user.login');

每次都失敗。

Laravel不能很好地從控制器定義默認布局 ,因此我認為也已棄用。

如何在Blade模板中包括子視圖? 將無法正常工作,因為我正在尋求即時執行此操作

當我嘗試以下操作時, https://laracasts.com/discuss/channels/general-discussion/laravel-5-this-layout-content-not-working?page = 1不適用於我:

$content = view('user.login');    
return view($this->layout, ['content' => $content]);

好的,您做錯了幾件事。

首先,如果要在布局內渲染視圖,則通常使用@extends Blade指令。 參見https://laravel.com/docs/5.4/blade#template-inheritance

在您的layouts/main.blade.php文件中:

@yield('body')

在您的users/login.blade.php文件中:

@extends('layouts.main')

@section('body')
    <!-- your markup -->
@stop

最后,要在Laravel控制器中呈現視圖,可以使用view()幫助器函數。

public function getLogin()
{
    return view('users.login');
}

暫無
暫無

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

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