CodeIgniter 3.x – Перезагрузка просмотра с помощью другого CSS-файла с использованием пользовательского ввода

Проблема:

Я создал статическое представление страницы (в своей собственной папке просмотра), которое демонстрирует новую структуру Sakura.css. В рамки входят четыре темы CSS. Я хочу, чтобы можно было выбрать тему из списка ссылок и перезагрузить один и тот же вид с помощью связанного с ним файла темы CSS через контроллер. Мне также требуется представление по умолчанию для темы «standard.css». Наконец, я хотел бы избежать решений JavaScript / jQuery.

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

Текущий код:

Примечание. Я также установил .htaccess для удаления index.php из URL.

просмотры / сакура / index.php

<!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8"> <title>Sakura Demo</title> <link rel="stylesheet" href="<?php echo asset_url() ;?>css/<?php echo $theme; ?>.css" media="screen" /> </head> <body> <header> <nav> <ul> <li><a <?php if (isset($theme) && ($theme = 'standard')) { echo 'class="current"'; } ?>href="<?php echo base_url('sakura/standard'); ?>">Standard</a></li> <li><a <?php if (isset($theme) && ($theme = 'dark')) { echo 'class="current"'; } ?>href="<?php echo base_url('sakura/dark'); ?>">Dark</a></li> <li><a <?php if (isset($theme) && ($theme = 'earthly')) { echo 'class="current"'; } ?>href="<?php echo base_url('sakura/earthly'); ?>">Earthly</a></li> <li><a <?php if (isset($theme) && ($theme = 'vader')) { echo 'class="current"'; } ?>href="<?php echo base_url('sakura/vader'); ?>">Vader</a></li> </ul> </nav> </header> <main> <h1>Sakura.css Demo</h1> <p>Sakura.css is a minimal css framework/theme that can be dropped into any project for an instantaneous modern-looking website.</p> </main> <footer> <p>Footer Text</p> </footer> </body> </html> 

Контроллеры / Sakura.php

 <?php class Sakura extends CI_Controller { public function theme($theme) { $data['theme'] = array( 'standard' => "standard", 'dark' => "dark", 'earthly' => "earthly", 'vader' => "vader" ); $this->load->view('sakura/theme', $data); } } 

конфиг / routes.php

 <?php $route['sakura/(:any)'] = 'sakura/$1'; $route['sakura'] = 'sakura'; $route['default_controller'] = 'pages/view'; $route['404_override'] = ''; $route['translate_uri_dashes'] = FALSE; 

Единственный способ, которым я смог получить представление для загрузки, – это эта функция в контроллере Sakura.php:

 public function index() { $data['theme'] = "standard"; $this->load->view('sakura/index', $data); } 

Желаемая структура URL: <- Не нужно, но было бы здорово!

Просмотр по умолчанию: mywebsite.com/sakura/ -or- mywebsite.com/sakura/standard

Тематический просмотр: mywebsite.com/sakura/selected-theme

Последние мысли:

Спасибо всем за любую помощь по этому вопросу. Я часто полагаюсь на сообщество StackOverflow, и я очень ценю время и внимание, которые решаются в решении моих проблем.

Related of "CodeIgniter 3.x – Перезагрузка просмотра с помощью другого CSS-файла с использованием пользовательского ввода"