标签:zend-navigation php twitter-bootstrap zend-framework
我目前正在使用Zend Framework 1.12.3创建我的新网站,我看到了一些我讨厌Zend Navigation的东西:
When a children route is active (exemple: a blog single post, route
blog-post
), it doesn’t mark the parent page (routeblog
in this case) as active.
这是我的代码:(navigation.xml)
<blog>
<label>BLOG</label>
<route>blog</route>
<title>BLOG_TITLE</title>
<pages>
<blog-post>
<route>blog-post</route>
<visible>false</visible>
</blog-article>
<blog-category>
<route>blog-category</route>
<visible>false</visible>
</blog-category>
</pages>
</blog>
很明显,如果像blog-post这样的子路由处于活动状态,我会将页面博客标记为活动状态.不使用子页面(我不想要),它不会这样做.因此,如果有一种方法可以标记路由名称博客以及所有以博客开头的路由(例如:blog-post,blog-category,blog-author),那将非常有用!
我不想使用子页面,因为我的菜单部分呈现空下拉列表(Twitter Bootstrap).自己看:
解决方法:
我知道它已经得到了解答,但我找到了不同的解决方案,因为马歇尔发布的一个解决方案对我不起作用.我想这是因为我没有在菜单中使用动作/控制器,而是使用路径.
我的菜单条目如下所示:
array(
'label' => 'cms-nav_users',
'access_module' => 'user',
'resource' => 'user_admin',
'route' => 'admin_user',
'pages' => array(
array(
'label' => 'cms-nav_companies',
'access_module' => 'user',
'route' => 'company_admin',
'resource' => 'company_admin',
),
array(
'label' => 'cms-nav_users-list',
'access_module' => 'company',
'route' => 'admin_user',
'resource' => 'user_admin',
),
),
),
我想出了一个基于我自己的菜单模板(部分)的解决方案.基本上有一个foreach循环,它检查是否有任何子页面是活动的,如果有一个 – 将父标记为活动,它看起来像这样:
$active = false;
if (!empty($page->pages))
{
foreach ($page->pages as $subpage)
{
if ($subpage->isActive()) $active = true;
}
}
$html[] = ($active) ? 'class="active"' : '';
希望它可以帮助别人:)
UPDATE
实际上我发现你可以使用Zend Framework自己的isActive()和true参数,如源代码所示:
Zend_Navigation_Page_Mvc::isActive($recursive = false)
两种方式都可行,但这种方式更合适.
标签:zend-navigation,php,twitter-bootstrap,zend-framework 来源: https://codeday.me/bug/20190729/1568095.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。