2017-03-07 108 views
2

我已經將我的Laravel運行環境更新爲截至此日期的最新版本。回到Laravel 4. *,我能夠做到這樣的事情:Laravel 4. *到5. *,在控制器中嵌套視圖

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

但是現在看起來像是失敗了。我經歷了很多帖子,嘗試了所有看起來合理的事情,而且我已經完全沒有提出任何適合我的案例。嘗試的努力鏈接可以在這篇文章的底部找到。下面是我正在努力工作的代碼。

我收到的錯誤範圍從「Class'App \ Http \ Controllers \ View'not found」 - 當我向控制器添加使用View時會解決這個問題,但這會導致另一個錯誤。我收到的另一個錯誤是「試圖分配非對象的屬性」,當我添加使用視圖;位。

的基本思路是這樣的:

我有兩個觀點,一個是這樣的基本頁面佈局(layouts.main),以及一個包含我希望我的主要佈局內嵌入用戶的登錄信息(用戶。登錄)。它們都是刀片格式文件,如果我嘗試這些文件,它們都會彼此獨立加載,但我無法將兩個文件嵌套在控制器下面。我試圖做到這一點,以便主文件可以是這樣,只有這個內容部分在頁面視圖之間改變。

控制器功能:

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

葉片部分文件:

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

嘗試的解決方案:使用View ::使 任何似乎會由於棄用 EX(?)。 https://laravel.io/forum/03-19-2014-simply-loading-multiple-views

試圖Laravel 4: Nest view inside layout with data

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

每次都失敗。

Laravel define default layout from controller in good way沒有工作,所以我認爲這也被棄用。

How to include a sub-view in Blade templates?將無法​​正常工作,因爲我要做到這一點就飛

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]); 

回答

4

好,有你做錯了一些事情。首先,如果要在佈局中渲染視圖,通常使用「刀片指令」@extends。見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'); 
} 
+0

我在工作版本中使用視圖函數,所以這不是問題。在帖子中提到的是舊功能,以及嘗試的方式,使功能能夠像以前一樣工作。至於主文件,以前通過控制器完成的工作現在完全通過刀片接口完成......? – Gyhth

+0

儘管這是我希望解決的問題,只是改變了控制器...哦,但是通過刀片腳本來完成所有這些工作似乎都有效。 +1給你! – Gyhth

+0

那麼,這是記錄的方式。很顯然,刀片服務器最終會編譯到PHP,因此您可以查看源代碼,然後查看是否可以通過控制器中的View對象執行此操作。 – fubar