没有刀片的Laravel - 控制器和视图

Jam*_*ner 5 laravel

我用直接的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'));有效,但是否定了我必须将所有变量发送到数组的观点.这不是唯一的方法.

视图模板文档似乎没有涉及使用来自控制器的嵌套视图执行变量.

Lau*_*nce 5

你可以这样传递变量;

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)


afa*_*zit 3

这是我如何使用 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)

希望能帮助您澄清一些事情

  • 我很惊讶人们竟然投票支持这个答案,这超出了主题?!问题是关于避免刀片,这个样本在哪里使用它?! (7认同)