1

我一直在使用和研究 Collin Williams 模板插件(http://williamsconcepts.com/ci/codeigniter/libraries/template/reference.html#manipulation),我已经在 CI 的论坛上发布了这个问题,但我认为最后一个帖子是去年的,也许它没有受到 Colllin 或 wat 的监控,但我想我只需要在这里发布,也许你们可以提供帮助。

CI论坛上的原始帖子

你好科林,

I’ve been studying your template plugin lately, as i was following your guide, 
i came across this line of code

$data = array('name' => 'John Smith', 'birthdate' => '11/15/1950'); 
$this->template->write_view('content', 'user/profile', $data, TRUE); 

在视图文件中,例如 mymastertemplate.php,我如何访问 $data 数组,它是否必须是由第一个参数定义的 $content,这有点令人困惑。一个地区,还是按 $name 和 $birthdate?...因为它说 $content 将显示数据数组?它有点令人困惑。希望你能启发我。

基本上这就是我的问题。

4

1 回答 1

0

Template.php库上我们可以看到 function write_view()。现在,专注于$data = NULL. 现在然后在 APPPATH.'views/'.$suggestion.'.php' 上找到一个现有数据文件,所以我认为这$args[0]应该是一个加载并破坏它的文件,而不是在$data.

function write_view($region, $view, $data = NULL, $overwrite = FALSE)
   {
      $args = func_get_args();

      // Get rid of non-views
      unset($args[0], $args[2], $args[3]);

      // Do we have more view suggestions?
      if (count($args) > 1)
      {
     foreach ($args as $suggestion)
     {
        if (file_exists(APPPATH .'views/'. $suggestion . EXT) or file_exists(APPPATH .'views/'. $suggestion))
        {
           // Just change the $view arg so the rest of our method works as normal
           $view = $suggestion;
           break;
        }
     }
      }

      $content = $this->CI->load->view($view, $data, TRUE);
      $this->write($region, $content, $overwrite);

   }

以另一种方式,$data应该是数组,它将响应 Codeigniter 库上的 View 模板数据(CI 的标准视图$this->CI->load->view(...):)

$data = array('name' => 'John Smith', 'birthdate' => '11/15/1950'); 
$this->template->write_view('content', 'user/profile', $data, TRUE); 

在模板文件 '/user/profile.php' 上用作示例:

HTML/PHP 模板文件profile.php

Your name: <?php echo $data["name"]; ?>
Your name: <?php echo $data["birthdate"]; ?>

正如我所看到的,由于文档的原因,一个 CONTENT 变量必须是一个数组......

$template['default']['regions'] = array(
  'header' => array(
    'content' => array('<h1>Welcome</h1>','<p>Hello World</p>'), ### <----- AS EXAMPLE
    'name' => 'Page Header',
    'wrapper' => '<div>',
    'attributes' => array('id' => 'header', 'class' => 'clearfix')
  )
);

区域必须定义为模板,因此如果您没有不起作用的header区域:

$template['default']['regions'] = array(
  'header',
  'content',
  'footer',
);

!!!!!!简单地说,他无法访问_ci_cached_vars存储数据的私有访问变量,例如$name. 相关主题:CodeIgniter 在调用 load->view 之间共享数据

于 2013-02-24T02:39:34.060 回答