如果你愿意的话,我在学习Codeigniter时遇到的最困难的部分是URI和URL"理论"。
我遵循了最初关于静态页面的教程,现在代码似乎把除了主导航栏之外的每个链接都搞砸了,需要我不断添加路由参数。我想我一定做错了什么。
在我的控制器中,我目前有以下代码,基于教程:
public function view($page = 'home') {}
我的文件夹结构是:
+ applications
+ views
- welcome.php
+ main
+ css
+ js
- home.php
- about.php
- etc.php
我应该指出,welcome.php页面是用于登录页面的。在该页面上,一个链接将引导您访问home.php(main/home/)
我的路由代码如下:
$route['default_controller'] = 'welcome';
$route['main/(:any)'] = 'main/view/$1';
$route['main/home/home'] = 'main/view/$1';
$route['404_override'] = '';
正如你所看到的,我已经不得不在上面贴上<code>$route['main/home/home'] = 'main/view/$1';</code>
部分的创可贴,因为在主页上点击"主页"会导致链接到main/home/home/显示我的导航栏,并创建一组全新的缺失链接,标签为main/home/about/
简而言之,我现在正试图引用一个.js文件和一个.css文件,但即使链接正确指向/main/css/style.css,它也无法识别。
这是我的头(在这里我加载.css和.js)的视图代码
<html>
<head>
<title><?php echo $title ?> - TownBuilder - Prototype</title>
<link href="css/structure.css" rel="stylesheet" type="text/css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script src="js/script.js"></script>
</head>
<body>
<header>
<ul>
<li> <a href="profile"><?php echo $username ?></a></li>
<li>Account</li>
</ul>
</header>
关于如何设置路由以使其正确工作,有什么建议吗?
IMHO他们需要从codeigniter教程中删除路由的部分,因为这不是必要的,而且会让每个人都陷入困境。
以下是事情运作的要点。首先评论掉你所有的路线。
控制器:
Class FirstController extends CI_Controller {
public function home() {
// do stuff
$this->load->view('home');
}
}
确保在视图文件夹中有一个名为home.php
的视图。
那么url应该是<base_url>/controller/method
,所以在这种情况下它将是<base_url>/FirstController/home
我认为你应该在根目录(应用程序文件夹的外部,一个名为css的文件夹)上添加css/js文件,因为CI有.htaccess文件,拒绝对应用程序文件夹进行所有访问。您只能在脚本中包含这些文件。