我想缓存大部分控制器的输出,但有些页面需要有链接,所以我可以添加和编辑信息。如果我设置一个“js”控制器并将“global.js”路由到“js”控制器的“全局”方法,我不能使用PHP动态添加一些JavaScript到“global.js”只有我'我以管理员身份登录?如果访问者不是管理员,是否有更好的方法来仅缓存页面?
答案 0 :(得分:0)
我想在页面上显示添加/编辑/删除链接,但前提是我以管理员身份登录。我也想缓存页面。 CodeIgniter的缓存不支持条件缓存,因此我需要一种解决方法来动态插入链接。我正在使用PHP来动态编写JavaScript,因此我可以使用jQuery来插入链接。
1)我在/config/routes.php中设置了这个:
$route['js/global.js'] = 'js/global_scripts'; // function can't be called "global" since it's a PHP keyword
2)然后我在我的js控制器中有这个功能:
public function global_scripts() {
$this->output->set_header("content-type: application/x-javascript")
$this->load->view('js/global'); // see below
} // global_scripts
3)这是js / global视图:
$(document).ready(function(){
<?php if($this->is_admin == TRUE): ?> // from my auth + MY_Controller
alert("you're an admin"); // or whatever JS I want
<?php endif; ?>
});
在我的视图文件中,我有一个常规的JavaScript链接:
<script src="/js/global.js"></script>
如果我访问该页面并以管理员身份登录,则会收到提醒,如果我没有以管理员身份登录,则不会收到提醒。所以现在我只能在登录时才能让脚本插入添加/编辑/删除链接。