2016-03-24 12 views
0

私はLaravel 5.1フレームワークを勉強していますが、困惑する問題があります。 はまず、私はその後、私は名前のコントローラを作成し、「ページ」という名前のモデルを作成する「にHomeController」、メソッドのコードは以下の通りです:Laravelのビューの復帰()

public function index() 
{ 
    return view('home')->withPages(Page::all()); 
} 

私は「withPages()」関数を見つけることができないので、私はヘルパー関数を見つけますview()は\ Illuminate \ View \ Viewを返すので、 'vendor/laravel/framework/src/Illuminate/View/View.php'を見つけると "__call()"があります。 しかし、私はこの機能を削除しようとすると、私のサイトはまだ正常です。 私は間違った場所を見つけましたか?私は非常に困惑しています。

+3

あなたは何を達成しようとしていますか? 'withPages()'関数は実際の関数ではなく、既に指摘したように '__call()'マジックメソッドを使って人工的に呼び出されます。なぜあなたはそれを削除したいですか? – Wader

+0

Waderのコメントに追加:モデルを使用してデータベーステーブルと対話することができます。後でこれらの情報をビューに渡すことができます。 モデルの詳細については:[Eloquent Models](https://laravel.com/docs/5.1/eloquent#introduction) –

+0

私はそれをテストしたいです!今私はニックの正解を見つける。ありがとうございました! –

答えて

0

... "__call()" があるので、私はそれを得ます。しかし、私はこの機能を削除しようとすると、私のサイトはまだ正常です。間違った場所を見つけましたか?私は非常に困惑しています。

おそらく。

Laravelはすべてのコアクラスをパフォーマンス最適化として単一のファイルに 'コンパイル'します。

php artisan clear-compiledを実行して、サイトの起動が失敗するはずです。

+0

あなたは私の混乱を解決しました。どうもありがとうございました。私はこの機能に非常に驚いています。 Laravelはどのようにしてコアクラスのすべてを1つのファイルにコンパイルしますか?それに関する物質や理論はありますか? –

+0

@xiangfeiai [OptimizeCommand](https://github.com/laravel/framework/blob/5.2/src/Illuminate/Foundation/Console/OptimizeCommand.php)はコンパイル済みファイルを生成します。 'bootstrap/autoload.php'は、フレームワークがコンパイルされたファイルをロードする場所です。 – Nick

0

withPagesメソッドを使用する場合は、メソッドに変数$pagesを設定する必要があります。

だからあなたの方法は、次のようになります。

public function index() 
{ 
    pages = Page::all(); 
    return view('home')->withPages($pages); 
} 

他の2つのオプション:

public function index() 
{ 
    return view('home')->with('pages', Page::all()); 
} 

または

public function index() 
{ 
    pages = Page::all(); 
    return view('home')->with(compact('pages)); 
} 

をあなたはこれらのいずれかの方法を使用することができます。

+0

あなたが理解する限り、あなたは '$ pages'変数を必要としません。 ' - > with'の後の部分では、変数の名前がビューの中でどのように指定されるかを定義するだけです。 –

+0

@ J.Eggerstedtはい、あなたは正しいです。この場合、3つのオプションがあります。私は答えを更新します。 –

0

は、これは私がそれを行うだろうかある -

public function index() 
{ 
    return view()->with('pages', Page::all()); 
}