首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PHP中使用模板

在PHP中使用模板
EN

Stack Overflow用户
提问于 2016-09-01 23:08:47
回答 1查看 1.6K关注 0票数 0

我不熟悉在PHP中使用模板库。我有几个关于如何使用它的问题。

我正在浏览文档,我没有找到一种设置全局布局的方法。有没有办法做到这一点?

我在Codeigniter内部使用它。理想情况下,我希望在MY_Controller文件中为大多数站点设置布局,并在需要时在扩展MY_Controller的控制器中进行更改;例如,设置主站点布局,然后在管理面板中设置所有其他管理控制器扩展的Auth_Controller中的管理布局。

要更改一组特定模板的布局,我必须遍历并编辑所有这些文件。这看起来并不理想。或者,即使只是传递特定布局的侧栏数据,也必须通过将侧栏数据传递到每个模板以及从每个模板传递到每个文件中的布局来完成。这似乎是非常多余的。我是不是遗漏了什么?

要阐明模板是模板系统/库,http://platesphp.com/

我所说的例子。管理布局有一个侧栏,其中包含所有的管理URL。这来自一个加载的配置文件,它有自己的模板/视图文件。

我调用模板并从控制器传递数据。

代码语言:javascript
运行
复制
// I created a library file that extends the Plates library so it can be easily loaded from the CI loader class
$data['sidebar_data'] = array(
    'navigation'=>'Navigation',
    'assets'=>'Assets',
    'config'=>'Config'
);
$data['controller_name'] => 'Users';
$this->plates->render('admin/whatever_page', $data);

在模板文件/当前页面内

代码语言:javascript
运行
复制
<?php $this->layout('layouts/admin', ['title' => $controller_name, 'sidebar_data' => $sidebar_data])
// stuff for this page
?>

在admin布局文件中加载的侧栏导航模板的内部

代码语言:javascript
运行
复制
<ul class="menu vertical">
    <?php foreach($sidebar_data as $url => $label):?>
    <li>
        <a href="<?= '/admin/' . $url ?>"><?= $label ?></a>
    </li>
    <?php endforeach; ?>
</ul>

然后是布局

代码语言:javascript
运行
复制
// there's a HEAD method in here that has the $title variable
<header class="row expanded collapse">
        <div class="column">
            <div class="top-bar">
                <div class="top-bar-left">
                    <ul class="menu">
                        <li>
                            <a href="/"><strong>Site Name</strong></a>
                        </li>
                    </ul>
                </div>
                <div class="top-bar-right">
                    <ul class="menu dropdown align-right" data-dropdown-menu>
                        <li>
                            <?= $current_user ?></a>
                        </li>
                        <li class="divider"> | </li>
                        <li>
                            <?= $this->insert('auth/logout_form') ?>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </header>
    <section id="content">
        <div class="left-panel">
            <?= $this->insert('adminnav', ['sidebar_data' => $sidebar_data])?>
        </div>
        <div class="main-panel">
            <?= $this->section('content')?>
        </div>
    </section>
    <div id="adminmodal" class="reveal" data-reveal>
        <button class="close-button" type="button" data-close aria-label="Close modal">
            <span aria-hidden="true">&times;</span>
        </button>
        <div class="modal-body"></div>
    </div>
    <script type="text/javascript">$(document).foundation()</script>
    <?= $this->insert('_blocks/googleanalytics')?>

必须将相同的数据从每个控制器方法传递到控制器的视图/模板,然后再从视图/模板传递到布局/其他模板,这是非常多余的。

EN

Stack Overflow用户

发布于 2020-07-31 02:05:03

将数组转换为json

例如:$this->plates>render(‘admin/admin_page’,"data“=> json_encode($data));

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39275170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档