BaseControllerにデフォルトのレイアウトを設定して、私が持っているすべてのビューで使用するようにしたいと思います。私はすべての単一のビューで "@extends"を使いたくありません。コントローラのデフォルトレイアウトを設定する(Laravel 5.2)
Laravel 4ではこれは簡単でした。今私はLaravel 5.2でこれを行う方法を見つけることができません。
アイデアはありますか?
私はstackoverflowの私の最初の質問です、私はルールに従っていると思います。
BaseControllerにデフォルトのレイアウトを設定して、私が持っているすべてのビューで使用するようにしたいと思います。私はすべての単一のビューで "@extends"を使いたくありません。コントローラのデフォルトレイアウトを設定する(Laravel 5.2)
Laravel 4ではこれは簡単でした。今私はLaravel 5.2でこれを行う方法を見つけることができません。
アイデアはありますか?
私はstackoverflowの私の最初の質問です、私はルールに従っていると思います。
解決策が見つかりました。 Laravel 4のコードを深く見ないように私を愚かにする。私は、レイアウトがコアのどこかでつながっていると思っていましたが、それは単に "callAction"機能を持つコントローラでした。この関数はレイアウトを設定し、適切なメソッドを呼び出します。
以下ここから取られ、このためのコードです:
https://laracasts.com/discuss/channels/general-discussion/laravel-5-this-layout-content-not-working
<?php namespace App\Http\Controllers;
use Illuminate\Routing\Controller;
class BaseController extends Controller {
protected $layout = 'core::layouts.default';
/**
* Show the user profile.
*/
public function setContent($view, $data = [])
{
if (! is_null($this->layout))
{
return $this->layout->nest('child', $view, $data);
}
return view($view, $data);
}
/**
* Set the layout used by the controller.
*
* @param $name
* @return void
*/
protected function setLayout($name)
{
$this->layout = $name;
}
/**
* Setup the layout used by the controller.
*
* @return void
*/
protected function setupLayout()
{
if (! is_null($this->layout))
{
$this->layout = view($this->layout);
}
}
public function callAction($method, $parameters)
{
$this->setupLayout();
$response = call_user_func_array(array($this, $method), $parameters);
if (is_null($response) && ! is_null($this->layout))
{
$response = $this->layout;
}
return $response;
}
}