2012-03-01 65 views
0

学习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(主/家/)

我的路由代码如下所示:

$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>部分相关,因为在主页上点击“home”会导致链接到main/home/home /显示我的导航栏,并创建一组全新的缺失链接,main/home/about/

总之,我现在试图引用.js文件和.css文件,但即使链接正确指向/main/css/style.css,它也不会rec认识它。

这里是我的头(其中i装入我的.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> 

上如何设置路由,使其正常工作有什么建议查看代码?

+0

如果您正在尝试引用.js文件和.css文件,但它不起作用,请张贴您的视图代码,以便我们了解您如何执行此操作。 – Catfish 2012-03-01 15:43:06

+0

作为一种替代方法,我通常将我的.js和.css文件放在网站的根目录中,并简单地用'base_url()之类的东西引用它们各自的目录。 “/ JS/file.js''。 – 2012-03-01 15:47:12

+0

我已添加视图代码。 – 2012-03-01 16:18:13

回答

0

我想你应该添加的CSS/JS的根目录文件(outsite应用程序文件夹克里特岛一个文件夹,名为CSS)为CI具有.htaccess文件,拒绝对应用程序文件夹的所有访问。您只能在脚本中包含这些文件。

+0

这工作。虽然我仍然很困惑路由。一次提出太多问题是我的错。 – 2012-03-01 16:29:56

1

恕我直言,他们需要从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

+0

为每个想要制作的页面创建一个新类是否是最佳实践?例如,为“Home”和“About”和“Etc”创建一个新类? – 2012-03-01 15:49:34

+0

你不必,但如果你想要你的网址是/home/index,/about/index,你必须为每个页面创建一个单独的控制器。另一种做法是创建1个名为site的控制器,然后在该控制器中为每个页面设置一个方法。然后,您的网址将显示为/site/home和/site/about等。 – Catfish 2012-03-01 16:08:24

+0

如果您不喜欢上一条评论的示例中的“site”部分,则应该在这些路线中。这将成为'$ routes ['home'] =“site/home”; $ routes ['about'] =“site/about”;'。网址将变成/home和 /约。也许'$ routes [(:any)] =“site/$ 1”;'它自己也可以工作,但要确保我必须先测试它。这意味着你只能拥有静态页面,因为一切都会被路由到该控制器。 – Zombaya 2012-04-28 22:10:31