我发现当我正在开发应用程序时,我在使用不同的方法时必须保持当前导航状态或url /查询字符串值。
我正在使用codeigniter框架和网址重写
例如:
我通过url使用类和方法:
example.com/class/method/item_id
所以说我使用的方法在我的应用程序中加载新的视图或导航状态
example.com/class/viewpage/10
现在说我想在刚加载的页面上运行另一种方法。好吧,我不能使用处理所有请求的相同通用代码,因为运行新方法将取代viewpage方法。
example.com/class/newmethod
当然有很多编程解决方案,但我已经开始在会话中保存导航状态而不是类中的私有变量。
$_SESSION['currentview'] = $this->_view;
这没关系。是否有任何我不知道的安全问题,或者$_SESSION
...
我是一名自学成才的程序员,所以如果这是一个愚蠢的问题,我会提前道歉。
答案 0 :(得分:1)
我不会使用$ _SESSION来存储导航状态。应使用所使用的方法通知导航状态。我通常做的是在控制器类的构造函数方法中设置当前的nav状态。
所以在你的控制器中:
class Items extends APP_Controller {
function Items(){
$this->current_nav = 1;
}
function viewpage(){
$this->load->view('page', array('current_nav' => $this->current_nav))
}
}
为该控制器的所有方法设置导航的状态。然后在你看来:
<ul id="nav">
<li <?= $current_nav == 1 ? 'class="active"' : '' ?>>Nav 1</li>
<li <?= $current_nav == 2 ? 'class="active"' : '' ?>>Nav 2</li>
<li <?= $current_nav == 3 ? 'class="active"' : '' ?>>Nav 3</li>
</ul>