【发布时间】:2017-05-23 01:26:13
【问题描述】:
问题:
我创建了一个静态页面视图(在它自己的视图文件夹中)来演示新的 Sakura.css 框架。该框架带有四个 CSS 主题。我希望能够从链接列表中选择一个主题,并通过控制器使用关联的 CSS 主题文件重新加载相同的视图。 我还需要将视图默认为“standard.css”主题。最后,我想避免使用 JavaScript/jQuery 解决方案。
我很难掌握控制器函数名称、自定义路由和 URI 之间的关系。我想我正处于“啊哈”时刻的边缘,找到解决这个问题的方法肯定会有所帮助。
当前代码:
注意:我还设置了 .htaccess 以从 URL 中删除 index.php。
views/sakura/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);
}
}
config/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/ -或- mywebsite.com/sakura/standard
主题视图:mywebsite.com/sakura/selected-theme
最后的想法:
在此先感谢大家对此问题的任何帮助。我经常依赖 StackOverflow 社区,我非常感谢为解决我的问题所花费的时间和考虑。
【问题讨论】:
标签: php codeigniter codeigniter-3