Могу ли я добавить административные ссылки с динамическим JavaScript из моего контроллера в CodeIgniter 2? - PullRequest
0 голосов
/ 09 февраля 2011

Я хочу кэшировать большинство выходных данных моих контроллеров, но на некоторых страницах должны быть ссылки, чтобы я мог добавлять и редактировать информацию. Если бы я установил контроллер «js» и направил «global.js» на «глобальный» метод контроллера «js», я не смогу использовать PHP для динамического добавления некоторого JavaScript в «global.js», только если я Я вошел как администратор? Есть ли лучший способ кэшировать страницы, только если посетитель не является администратором?

1 Ответ

0 голосов
/ 10 февраля 2011

Я хочу показывать ссылки добавления / редактирования / удаления на странице, но только если я вошел в систему как администратор.Я также хочу кэшировать страницу.Кэширование 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>

Если я захожу на страницу и захожу в систему как администратор, я получаю оповещение и не получаю оповещения, если я не вошел в систему как администратор.Так что теперь я могу добавить скрипт добавления / редактирования / удаления ссылок, только если я вошел в систему.

...