Zend框架动态面包屑标签

时间:2010-09-08 10:35:27

标签: php zend-framework

嘿,我在navigation.xml中得到了Zend导航,如下所示:

<nav>
    <home>
        <label>Home</label>
        <controller>index</controller>
        <resource>index</resource>
        <action>index</action>
        <pages>
            <Reports>
                <label>Reports</label>
                    <controller>Reports</controller>
                    <resource>Reports</resource>
                    <action>index</action>
            </Reports>
        </pages>
    </home>
</nav>

我已经通过

初始化了我的面包屑
$this->navigation()->breadcrumbs()

只要页面在navigation.xml中就可以正常工作,但我想要的是,例如,有一个名为“今日报告”的报告,那么面包屑应该如下所示:Home&gt;报告&gt;今天的报告,换句话说,动态面包屑,有没有办法做到这一点?或者我应该实施自己的?我应该抛弃XML并应该使用数组进行导航,然后全部从数据库动态构建,然后将对象存储到注册表中?但是我再也不希望所有这些出现在导航中,它应该仅用于面包屑。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要将xml更改为以下内容:

<nav>
    <home>
        <label>Home</label>
        <controller>index</controller>
        <resource>index</resource>
        <action>index</action>
        <pages>
            <Reports>
                <label>Reports</label>
                <controller>Reports</controller>
                <resource>Reports</resource>
                <action>index</action>
                <pages>
                    <TodayReport>
                        <label>Today Report</label>
                        <controller>Reports</controller>
                        <action>today-report</action>
                                            <visible>0</visible>
                    </TodayReport>
                </pages>
            </Reports>
        </pages>
    </home> </nav>

今日报告将隐藏到期(0),但要为面包屑启用它们,请使用以下内容: $这 - &GT;导航() - &GT;面包屑() - &GT; setRenderInvisible(TRUE);

您可以从数据库生成导航对象,这在文档中没有解释,但您可以了解如何创建导航对象。 http://framework.zend.com/manual/en/zend.navigation.pages.html

答案 1 :(得分:0)

如果只是面包屑而不是站点地图,不要渲染最后一个元素并使用标题,那么您可能已经在页面上显示:

<?= $this->navigation()->breadcrumbs()->setMinDepth(0) . ' > ' . $this->title ?>

否则,您必须迭代容器并手动执行替换。