我正在使用以下模板 library .我想要做的是在模板中加载一个或多个上层 View ,作为一个数组,以便我可以使用 for-each 循环轻松地将它们加载到模板中。
这是一个关于如何在 Controller 上使用它的简单示例:
function index() {
$data['title'] = 'My page title';
$partials = array('content'=>'c_location'); //Load view about inside the template.
$this->template->load('main', $partials, $data);
}
在 View 上你有一个像这样的 html:
<html>
....
<?=$content?>
...
</html?>
这是我正在尝试使用的: Controller :
$partials = array('content'=>'c_location',
array(
'first_upper_content'=>'1_u_location','second_upper_content'=>'2_u_location'
)
);
例如,我可以为 upper_content 传递顶部标题作为“first_upper_content”,为“second_upper_content”传递幻灯片,然后为“content”传递其余内容。
HTML:
...
<?=$upper_content?>
<--if upper_content is a array,
I could display each content with a for loop-->
<?=$content?>
当我尝试一切时,我得到:
Message: pathinfo() expects parameter 1 to be string, array given
Filename: core/Loader.php
Line Number: 759
我该如何实现?我正在考虑修改
// Load views into var array
在 Template.php 中并向 html 添加一个 foreach 循环;
最佳答案
这就是你想要的:
// Load views into var array
foreach(array_flat($view) as $key => $file)
在 Template.php 中包含“array_flat”函数调用,如上所示。
您将需要定义此函数。您可以在任何自动加载的帮助程序中执行此操作,甚至可以将其包含在自己的模板类中(在这种情况下,您应该在上面的代码中将其称为 $this->array_flat
)。这是它:
function array_flat($array)
{
$result = array();
foreach ($array as $key => $value)
{
if (is_array($value))
{
$result = array_merge($result, array_flat($value));
}
else
{
$result[$key] = $value;
}
}
return $result;
}
关于php - 带有二维数组的 CodeIgniter 模板库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269473/