joh*_*son 2 php navigation codeigniter
我正在一个网站上工作,导航中最多可以有3级层次结构.
在过去,当我用PHP编写自己的文件时,我会创建一个文件navigation.php,其中包含所有部分和子部分的类和数组以及一些输出导航的函数.我在网站的每个页面上设置变量(current_section ='',current_sub_section =''),因此导航功能会知道要突出显示的内容.
在CodeIgniter中,我想知道这仍然是一个很好的使用方法吗?
我假设您的主导航部分几乎直接映射到您的控制器,即.
Home | News | Events
在顶部栏中,映射到:
如果是这种情况,您已经有了一种选择导航阵列的简单方法.
您可以在控制器构造函数中放置一组导航项链接对,并将它们传递到输出中的子视图.
例:
class HomeController extends CI_Controller
{
private $nav;
public function __construct()
{
parent::__construct();
$this->nav = array(
array('Browse', site_url('news/browse')),
array('Edit', site_url('news/edit'))
);
$this->load->vars(array('NavigationArray' => $this->nav));
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在你所做的就是在你的所有视图$NavigationArray中自动注册一个包含Display Name - Link对数组的变量.
然后,您可以加载一个基本的导航视图,从该变量构建您的子视图(因为它可以在任何地方使用).
<? foreach($NavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
在下面你可以找到你可以选择在控制器中设置的子导航阵列的存在,或者其他什么(你谈到的第三个可选导航)
<? if(exists($SubNavigationArray)): ?>
<? foreach($SubNavigationArray as $entry): ?>
<a href="<?=$entry[1];?>"><?=$entry[0];?></a>
<? endforeach; ?>
<? endif; ?>
Run Code Online (Sandbox Code Playgroud)
请记住,这个例子非常基本,但这通常是我们传递数据的方式,我不希望你把全局变量放在任何地方并尝试排队.只需将变量"加载"到视图引擎中,就可以在渲染视图/子视图时使用它们.
这样控制器控制导航项目的显示.
另请注意:
您可以显式传递变量,而不是相信它们将存在于视图的范围内.
$this->load->view('myview', array('NavigationArray' => $this->nav));
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
7025 次 |
| 最近记录: |