在Laravel 4中,我的控制器使用刀片布局:
class PagesController extends BaseController {
protected $layout = 'layouts.master';
}
主布局输出变量标题,然后显示视图:
...
<title>{{ $title }}</title>
...
@yield('content')
....
但是,在我的控制器中,我似乎只能将变量传递给子视图,而不是布局。例如,一个动作可能是:
public function index()
{
$this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}
这只会将$title
变量传递给视图的内容部分。如何将该变量提供给整个视图,或者至少是主布局?
答案 0 :(得分:170)
如果您在内容布局中使用@extends
,则可以使用:
@extends('master', ['title' => $title])
答案 1 :(得分:28)
对于使用Laravel 5的未来Google员工,您现在也可以将其与包含
一起使用@include('views.otherView', ['variable' => 1])
答案 2 :(得分:19)
我能够通过将其添加到我的控制器方法来解决这个问题:
$title = 'My Title Here';
View::share('title', $title);
$ this-&gt; layout-&gt; title ='主页';也没用。
答案 3 :(得分:11)
在刀片模板中:定义一个像这样的变量
@extends('app',['title' => 'Your Title Goes Here'])
@section('content')
在app.blade.php或您选择的任何其他内容中(我只是遵循默认的Laravel 5设置)
<title>{{ $title or 'Default title Information if not set explicitly' }}</title>
这是我的第一个答案。希望它有效。祝你好运!
答案 4 :(得分:4)
好像我可以使用布局对象上的属性将变量传递给整个布局,例如为了解决我的问题,我能够执行以下操作:
$this->layout->title = 'Home page';
答案 5 :(得分:4)
最简单的解决方法:
view()->share('title', 'My Title Here');
或使用视图Facade:
use View;
...
View::share('title', 'My Title Here');
答案 6 :(得分:2)
class PagesController extends BaseController {
protected $layout = 'layouts.master';
public function index()
{
$this->layout->title = "Home page";
$this->layout->content = View::make('pages/index');
}
}
在刀片模板文件中,记住在变量前面使用@。
...
<title>{{ $title or '' }}</title>
...
@yield('content')
...
答案 7 :(得分:0)
您可以尝试:
public function index()
{
return View::make('pages/index', array('title' => 'Home page'));
}
答案 8 :(得分:0)
只需尝试以下简单方法: 在控制器中:-
public function index()
{
$data = array(
'title' => 'Home',
'otherData' => 'Data Here'
);
return view('front.landing')->with($data);
}
在您的布局中(app.blade.php):
<title>{{ $title }} - {{ config('app.name') }} </title>
就这些。
答案 9 :(得分:0)
如果要获取各个部分的变量,可以按以下方式支付:
$_view = new \View;
$_sections = $_view->getFacadeRoot()->getSections();
dd($_sections);
/*
Out:
array:1 [▼
"title" => "Painel"
]
*/
答案 10 :(得分:0)
以下是对我有用的简单解决方案。 在布局中
u1 u2 u3 value
time
2021-06-28 00:00:00 ON ON ON 1.000
2021-06-28 01:00:00 ON ON ON 1.000
2021-06-28 02:00:00 ON ON ON 1.000
2021-06-28 03:00:00 ON ON ON 1.000
2021-06-28 04:00:00 ON ON ON 0.664
2021-06-28 04:00:00 OFF ON ON 0.336
2021-06-28 05:00:00 OFF ON ON 0.410
2021-06-28 05:00:00 ON ON ON 0.590
2021-06-28 06:00:00 OFF ON ON 1.000
在你的刀片中
<title>@yield('Page-Title') </title>
答案 11 :(得分:-2)
$data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);
到目前为止我已经这样做了,因为我需要在视图和主文件中。如果您不使用$ this-&gt; layout-&gt;标题,它将无法在主布局中使用。欢迎改进!