2017-03-07 27 views
2

私はこの日現在、自分のLaravel実行環境を最新リリースに更新しました。 Laravel 4 *に戻ると、私は次のようなことをすることができました:Laravel 4. * to 5. *、コントローラのビューをネストする

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

しかし、それは失敗します。私は多くの記事を読んで、妥当と思われるものすべてを試してきました。私は、私の場合には全く役に立たないものを考え出しました。試した努力へのリンクはこの記事の最後にあります。以下は私が働くことを試みているコードです。

"クラス 'App \ Http \ Controllers \ View'の範囲から受信したエラー - コントローラにViewを使用すると解決されますが、別のエラーが発生します。私が受け取ったもう一つのエラーは、ビューを使用するときに "非オブジェクトのプロパティを割り当てようとしています"というエラーです。ビット。

私は2つのビュー、私は私のメインのレイアウトの内側に埋め込むことを希望していたユーザのログインが含まれている基本的なページレイアウト(layouts.main)、及び一つだものを持っている(利用者:

基本的な考え方はこれです。ログイン)。彼らは両方のブレード形式のファイルです、私はそれを試みると、彼らはお互いに独立してロードする、私は単純にコントローラの下に入れ子に2つのファイルを取得することはできません。私はこれをしようとしているので、メインファイルはそれだけであり、このコンテンツセクションだけがページビュー間で変更されます。

コントローラー機能:ブレード・ファイルの

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

章:

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

未遂ソリューション:ビューを使用して 何:: makeが原因廃止に失敗しているようだ 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

さて、ありますあなたが間違っていることのカップル。

第1に、レイアウト内でビューをレンダリングする場合は、通常、@extendsブレードディレクティブを使用します。あなたのusers/login.blade.phpファイルで

@yield('body') 

:あなたのlayouts/main.blade.phpファイルでhttps://laravel.com/docs/5.4/blade#template-inheritance

を参照してくださいLaravelコントローラ内のビューをレンダリングするために、

最後
@extends('layouts.main') 

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

、あなたはview()ヘルパー関数を使用することができます。

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

私は実際のバージョンではview関数を使用していますので、問題ありません。ポストの言葉は、これまでのように機能するように、古い方法と試行錯誤した方法です。メインファイルに関して、コントローラを介して行われていたことは、今ではブレードインターフェイスを介して完全に行われています...? – Gyhth

+0

Welpは、ブレードスクリプトを使ってすべてのことをやっているようですが、それは私が周りを回りたいと思っていたものですが、コントローラを変更するだけです。あなたに+1! – Gyhth

+0

これは文書化された方法です。当然のことながら、ブレードは最終的にPHPにコンパイルされるので、ソースを調べて、代わりにコントローラのViewオブジェクトを介してそれを実行できるかどうかを確認することができます。 – fubar

関連する問題