簡體   English   中英

以正確的方式在Codeigniter中進行路由

[英]Routing in codeigniter the right way

我正在開發我的主頁,該頁面的右上角有一個登錄按鈕。 當“登錄”文本如下時,我想顯示一個登錄頁面:

<li class="nav-item">
                <a class="nav-link header-text" href="<?php echo 
site_url('Login/login') ?>">Login</a>
</li>

因此,該控制器稱為“登錄”,而視圖稱為“登錄”。

我在routes.php文件中的路由規則如下

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

我的基本網址是: http:// localhost:8080 /我的網站網址是: http:// localhost:8080 / index.php

我的.htaccess文件如下所示:

<IfModule authz_core_module>
    Require all denied
</IfModule>
<IfModule !authz_core_module>
    Deny from all
</IfModule>

當前設置的方法不適用於路由,如果我單擊登錄名並重定向到以下URL,則會收到404未找到的消息: http:// localhost:8080 / index.php / Login / login.html您能幫我解決這個問題嗎? 謝謝!

編輯:這是登錄控制器代碼:

<?php
class Login extends CI_Controller {

    public function view($page_name = 'login')
    {
        if ( ! file_exists(APPPATH.'views/pages/'.$page_name.'.php'))
        {
                // Whoops, we don't have a page for that!
                show_404();
        }

        $data['title'] = ucfirst($page_name); // Capitalize the first letter

        $this->load->view('templates/header', $data);
        $this->load->view('pages/'.$page_name, $data);
        $this->load->view('templates/footer', $data);
    }

}

嘗試刪除$route['(:any)'] = 'pages/view/$1'; 看看會發生什么。 它正在抓取每個請求並將其重定向到“頁面/視圖”。

我擔心您會誤解CodeIgniter(CI)如何使用URL。 你說,

因此,該控制器稱為“登錄”,而視圖稱為“登錄”。

這使我相信URL代表

example.com/class/view

當他們實際代表這個

example.com/class/function/id/

其中“ id”是要傳遞給函數的一個或多個值。

也許您的評論有誤,但如果不是這樣,我建議您重新閱讀文檔的CodeIgniter URLs部分。 您可能還會發現“ URI路由 ”部分很有價值,因為它清楚地定義了何時可能要使用/config/Routes.php的內容。

登錄URL也很奇怪。 我很好奇,看看控制器代碼是什么樣子。

好吧,我做到了! 基本上,我對本教程之后創建的標准路由規則有一個錯誤的想法。 要解決此問題,我必須:1)將我的base_url更改為: http:// localhost:8080 / app 我添加了/ app 2)在這種情況下,路由到視圖的正確方法是: http:// localhost:8080 / app / index.php / name_of_the_class 3)為每個頁面加載CSS,我必須在鏈接標記中使用base_url語法,例如:“ type =” text / css“ media =” all“>

如果您有任何建議,最佳做法或我可以做得更好的事情,我在這里!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM