3

在我的页面控制器中,我有

$this->layout->content = View::make('authentication/login')->with('page_title','title');

我正在为我的模板使用刀片文件。在 html 的头部,我有

<title>{{$page_title}}</title>

我收到一个$page_title未定义的错误。

理想情况下,我想要的是一个$data=array('page_title'=>'Login','second_item'=>'value').... 但由于我无法将变量基本传递给视图工作,所以我首先坚持这一点。

4

4 回答 4

3

正如@Gravy 指出的那样,有很多方法可以实现这一点,但从她尝试编写代码的方式来看,解决方案是:

$data = array();
$this->layout->with('data', $data);
$this->layout->content = View::make('home');

在此处查看更多信息:http: //forums.laravel.io/viewtopic.php?pid=58548#p58548

于 2013-10-17T14:43:51.753 回答
3
$data = 
[
    'page_title' => 'Login',
    'second_item' => 'value'
    ...
];

return View::make('authentication/login', $data);

// or

return View::make('authentication/login', compact('data'));

// or

return View::make('authentication/login')->with($data);

// or

return View::make('authentication/login')->with(['page_title' => 'Login', 'second_item' => 'value']);

// or

return View::make('authentication/login')->with(array('page_title' => 'Login', 'second_item' => 'value'));
于 2013-10-17T13:42:55.160 回答
1
$data = array('page_title'=>'Login','second_item'=>'value');
return View::make('authentication/login', $data);
于 2013-10-17T14:00:08.503 回答
0

因此,要让布局在控制器中工作,您需要首先content在布局刀片模板中声明变量。

在您的控制器中执行您已经完成的操作,但在视图中使用目录结构时请记住点符号。layouts.master 与 layouts/master.blade.php 相同。

class UserController extends BaseController {
    /**
     * The layout that should be used for responses.
     */
    protected $layout = 'layouts.master';

    public function getIndex()
    {
        // Remember dot notation when building views
        $this->layout->content = View::make('authentication.login')
                                     ->with('page_title','title');
    }
}

布局/master.blade.php

<div class="content">
    {{-- This is the content variable used for the layout --}}
    {{ $content }}
</div>

身份验证/login.blade.php

<title>{{ $page_title }}</title>

如果您使用此结构,这将起作用。

于 2013-10-17T14:48:38.393 回答