我用直接的php设置我的视图逻辑更有效率.刀锋很酷,但不适合我.我试图将所有Blade特定的示例和文档翻译成php.我不喜欢我需要在View :: make()数组中为视图分配所有变量的事实.到目前为止我确实找到了所有这些.
控制器/ home.php:
class Home_Controller extends Base_Controller {
public $layout = 'layouts.default';
public function action_index()
{
$this->layout->name = 'James';
$this->layout->nest('content', 'home.index');
}
}
Run Code Online (Sandbox Code Playgroud)
景色/布局/如default.php:
// head code
<?php echo Section::yield('content') ?>
// footer code
Run Code Online (Sandbox Code Playgroud)
意见/家/ index.php文件
<?php Section::start('content'); ?>
<?php echo $name ?>
<?php Section::stop(); ?>
Run Code Online (Sandbox Code Playgroud)
我受到了这个错误的欢迎:Error rendering view: [home.index] Undefined variable: name.我知道这$this->layout->nest('content', 'home.index', array('name' => 'James'));有效,但是否定了我必须将所有变量发送到数组的观点.这不是唯一的方法.
视图模板文档似乎没有涉及使用来自控制器的嵌套视图执行变量.
你可以这样传递变量;
class Home_Controller extends Base_Controller {
public $layout = 'layouts.default';
public function action_index()
{
$this->layout->nest('content', 'home.index')
->with('name', 'James');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我如何使用 Laravel 进行模板化的示例。
Class Products_Controller extends Whatever_Controller {
public $layout = 'layouts.main';
public function get_index()
{
// .. snip ..
$view = View::make('home.product')
->with('product', $product); // passing all of my variable to the view
$this->layout->page_title = $cat_title . $product->title;
$this->layout->meta_desc = $product->description;
$this->layout->content = $view->render(); // notice the render()
}
}
Run Code Online (Sandbox Code Playgroud)
我的主要布局看起来像
<html>
<head>
<title> {{ $page_title }} </title>
<meta name="description" content="{{ $meta_desc }}" />
</head>
<body>
{{ $content }}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
主页/产品页面看起来像
<div class="whatev">
<h1> {{ $product->title }} </h1>
<p> {{ $product->description }} </p>
</div>
Run Code Online (Sandbox Code Playgroud)
希望能帮助您澄清一些事情
| 归档时间: |
|
| 查看次数: |
5926 次 |
| 最近记录: |