我一直在使用和研究Collin Williams模板插件(http://williamsconcepts.com/ci/codeigniter/libraries/template/reference.html#manipulation),我已经在CI的论坛上发布了这个问题,但我认为去年的最后一篇文章可能没有受到Colllin或者wat的监控但我想我只需要发布这里也许你们可以提供帮助。
CI论坛上的原帖
Hello Collin,
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? ... cuz'它说$ content会显示 数据数组?它有点令人困惑。希望你能开导我。
基本上就是我的问题。
答案 0 :(得分:0)
在Template.php
库上,我们可以看到函数write_view()
。现在,关注$data = NULL
。现在然后在APPPATH.'views /'.$暗示找到一个已存在数据的文件。'。php'所以我认为$args[0]
应该是一个加载并打破它的文件,而不是在{上加载一个视图模板{1}}。
$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);
}
应该是一个数组,它将响应Codeigniter库上的View模板数据(CI的标准视图:$data
)
$this->CI->load->view(...)
在模板文件'/user/profile.php'上使用例如:
HTML / PHP模板文件$data = array('name' => 'John Smith', 'birthdate' => '11/15/1950');
$this->template->write_view('content', 'user/profile', $data, TRUE);
:
profile.php
正如我所看到的,由于文档的原因,CONTENT var必须是ARRAY ...
Your name: <?php echo $data["name"]; ?>
Your name: <?php echo $data["birthdate"]; ?>
必须将区域定义为模板,因此如果您没有$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
。相关主题:CodeIgniter shared data between calls to load->view