我可以从 CodeIgniter 2 中的控制器添加带有动态 JavaScript 的管理链接吗?

发布于 2024-10-17 02:24:28 字数 170 浏览 1 评论 0原文

我想缓存大部分控制器的输出,但某些页面需要有链接,以便我可以添加和编辑信息。如果我设置一个“js”控制器并将“global.js”路由到“js”控制器的“全局”方法,那么只有当我'时,我不能使用PHP动态添加一些JavaScript到“global.js”我以管理员身份登录?如果访问者不是管理员,是否有更好的方法仅缓存页面?

I want to cache most of my controllers’ output, but some of the pages need to have links so I can add and edit the info. If I set up a “js” controller and routed “global.js” to a “global” method of a “js” controller, couldn’t I use PHP to dynamically add some JavaScript to “global.js” only if I’m logged in as an admin? Is there a better way to only cache pages if the visitor is not an admin?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独自唱情﹋歌 2024-10-24 02:24:28

我想在页面上显示添加/编辑/删除链接,但前提是我以管理员身份登录。我还想缓存该页面。 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>

如果我访问该页面,并且我以管理员身份登录,我收到警报,如果我没有以管理员身份登录,则不会收到警报。所以现在我只能在登录时让脚本插入添加/编辑/删除链接。

I want to show add/edit/delete links on a page, but only if I'm logged in as an admin. I also want to cache the page. CodeIgniter's caching doesn't support conditional caching, so I needed a workaround to insert the links dynamically. I'm using PHP to dynamically write JavaScript so I can use jQuery to insert the links.

1) I set this in /config/routes.php:

$route['js/global.js'] = 'js/global_scripts'; // function can't be called "global" since it's a PHP keyword

2) Then I have this function in my js controller:

public function global_scripts() {
    $this->output->set_header("content-type: application/x-javascript")
    $this->load->view('js/global'); // see below
} // global_scripts

3) And this is the js/global view:

$(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; ?>
});

In my view files I have a regular JavaScript link:

<script src="/js/global.js"></script>

If I visit the page and I'm logged in as an admin, I get an alert, and I don't get an alert if I'm not logged in as an admin. So now I can have the script insert add/edit/delete links only if I'm logged in.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文