簡體   English   中英

是否可以使用不同的網址顯示同一頁面?

[英]Is it possible to show same page with different url?

我想為不同的URL顯示相同的內容。 例如:

website.com/controllername/country/state1/dist1/
website.com/controllername/country/state2/dist2/

我希望這兩個URL顯示相同的內容,即使某些內容會因URL而異(例如州名和地區名)。 我不想為每個URL創建單獨的內容/頁面。 我想知道是否可以在Codeigniter中這樣做嗎? 並且可以在Codeigniter中顯示類似上面的URL?

是的,使用Codeigniter路由是可能的,

在您的application/config/routes.php粘貼以下代碼,並更改您使用的控制器和函數名稱,

$route['([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])'] = 'your_controller_name/your_function_name/$1/$1/$1';

與其他框架不同,CodeIgniter沒有全局模板系統。 除非另有說明,否則每個控制器都獨立於系統控制自己的輸出,並且視圖為FIFO。

例如,如果我們有一個全局標題:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
<html>
    <head>
        <title><?=$title?></title>
        <!-- Javascript -->
        <?=$javascript ?>
        <!-- Stylesheets -->
        <?=$css ?>
    </head>
    <body>
        <div id="header">
            <!-- Logos, menus, etc... -->
        </div>
        <div id="content">

和全球頁腳:

</div>
        <div id="footer">
            <!-- Copyright, sitemap, links, etc... -->
        </div>
    </body>
</html>

那么我們的控制器將不得不看起來像

class Welcome extends Controller {

    function index() {
        $data['title'] = 'My title';
        // Javascript, CSS, etc...

        $this->load->view('header', $data);

        $data = array();
        // Content view data
        $this->load->view('my_content_view', $data);

        $data = array();
        // Copyright, sitemap, links, etc...
        $this->load->view('footer', $data);
    }
}

是的,您可以在路由上使用不同的URL設置來設置同一頁面。 請參閱下面的鏈接以獲取更多信息: https : //www.codeigniter.com/userguide3/general/routing.html

$ route ['controllername / country / state1 / dist1 /'] ='catalog / product_lookup'; $ route ['controllername / country / state1 / dist2 /'] ='catalog / product_lookup';

改善krishnaraj答案...

您需要website.com/controllername/method1/st/dist/ website.com/controllername/method2/st/dist/

//為了更好的理解,我更改了一些變量,而“國家”將//是主要更改

所以在您的控制器上

public function method1($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data);
     //here you choose the same view for both methods

     $this->load->view('footer');
}

public function method2($st1,$st2){ 
     $this->load->view('header');

     $this->load->model('data_processing');
     $data['data'] = $this->data_processing->any_model_function($st1,$st2);

     $this->load->view('page_you_want',$data); 
     //here you choose the same view

     $this->load->view('footer');
}

在Kavin Smk解釋的路由配置情況下,只注意到一個錯誤,而不是

'your_controller_name/your_function_name/$1/$1/$1';

應該是

'your_controller_name/your_function_name/$1/$2/$3';

好吧,總有很多方法可以做到這一點,選擇您自己的方法……祝您好運!

暫無
暫無

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

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