【问题标题】:Displaying Content with laravel template without blade使用没有刀片的 laravel 模板显示内容
【发布时间】:2013-02-21 15:01:35
【问题描述】:

我有这个控制器方法

class Account_Controller extends Base_Controller
{
    public $layout = 'layouts.default';

    public function action_index($a,$b)
    {
        $data['a']  =   $a;
        $data['b']  =   $b;

        $this->layout->nest('content', 'test',$data);
    }
}

这是我的布局

<div id = "content">
    <?php echo Section::yield('content'); ?>
</div>

这是我的 test.php

echo $a;
echo '<br>';
echo $b;
echo 'this is content';

当我访问这个

http://localhost/myproject/public/account/index/name/email

我的布局已加载,但未加载 test.php。如何在我的模板中加载内容。我不想用刀片。

【问题讨论】:

    标签: php layout laravel laravel-4


    【解决方案1】:

    我认为你需要渲染它,不确定,可能是部分加载:

    <div class="content">
        <?php echo render('content.test'); ?>
    </div>
    

    查看此示例以了解嵌套视图:http://laravel.com/docs/views#nesting-views

      public function action_dostuff()
       {
          $view = View::make('controller.account');
          // try dump var to grab view var_dump($view);
          var_dump($view);
          $view->test = 'some value';
          return $view;
       }
    

    或者使用刀片代替:Templating in Laravel

    【讨论】:

      【解决方案2】:

      当您将一个视图嵌套在另一个视图中时,它的内容被定义为一个简单的变量。所以,简单地输出它:

      <?php echo $content ?>
      

      当您需要从子视图中更改布局(或任何父视图)上的某些内容时,使用部分。例如:

      // on layout.php
      <title><?php echo Section::yield('title') ?></title>
      
      // on test.php
      <?php Section::start('title'); ?>
          My Incredible Test Page
      <?php Section::stop(); ?>
      
      <div class="test_page">
          ...
      </div>
      

      【讨论】:

      • 太棒了!这太简单了,我从来没有注意这可能太简单了。谢谢!
      猜你喜欢
      • 2017-04-18
      • 2019-01-15
      • 1970-01-01
      • 2014-11-07
      • 2020-11-15
      • 2018-03-14
      • 1970-01-01
      • 2016-06-26
      • 2014-09-14
      相关资源
      最近更新 更多