2014-10-02 18 views
2

以我的應用
我有3條路由規則(在routes.php文件中定義)多數民衆贊成定向到一個控制器如何識別使用指向我的Codeigniter控制器的路由規則?

$route[urlencode('news')]  = "news/show-news"; 
$route[urlencode('letters')] = "news/show-news"; 
$route[urlencode('papers')]  = "news/show-news"; 

所以
如果任何用戶導航到任何這些網址
http://example.com/news/
http://example.com/letters/
http://example.com/papers/

目標控制器將爲news/show-news

我需要
如何識別使用指向我的Codeigniter控制器的路由規則?

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class News extends CI_Controller { 
    public function show-news(){   
     // came from [news OR letters OR papers] ?? 

    } 
} 

回答

1

首先感謝@aspirinemaga
他的答案是正確的
但是,如果我們想這樣做不使用參數控制器功能
我們能做到這一點的又質疑

public function show-news(){ 

    // came from [news OR letters OR papers] ?? 
    $requested_URI_segment = $this->uri->segment(1); 
    $requested_URI_segment = urldecode($requested_URI_segment); 

    switch ($requested_URI_segment){ 
     // If news requested 
     case 'news': 
      // your code here 
      echo 'news requested'. '</br>'; 
     break; 

     // If letters requested 
     case 'letters': 
      // your code here 
      echo 'letters requested'. '</br>'; 
     break; 

     // If papers requested 
     case 'papers': 
      // your code here 
      echo 'papers requested'. '</br>'; 
     break; 

     // Default landing if nothing provided 
     default: 
      // your code here 
      echo 'select one of the show method'. '</br>'; 

    } 
-2

試試這個:

$route['news'] = "controller/method_name"; 
$route['letter'] = "controller/method_name"; 
$route['papers'] = "controller/method_name"; 

我有我之前使用CI做項目,我有一節是學生&缺席。所以在我的路線我設置像這樣:

$route['student/page'] = "student/index"; 
$route['student/page/(:num)'] = "student/index/$1"; 
$route['absent/page'] = "absent/index"; 
$route['absent/page/(:num)'] = "absent/index/$1"; 

並與一些設置在htaccess。

+0

答案是不相關 – 2014-10-02 14:34:20

1

你可以這樣做,但有很多方法可以實現你想要的。基本上,給你一個球開始,看看下面的代碼:

在你的控制器,你把這個代碼:

class News extends CI_Controller { 
    public function show_news($method = '')  
    { 

     switch ($method) 
     { 
      // If news requested 
      case 'news': 
       // your code here 
       echo 'news requested'; 
      break; 

      // If letters requested 
      case 'letters': 
       // your code here 
       echo 'letters requested'; 
      break; 

      // If papers requested 
      case 'papers': 
       // your code here 
       echo 'papers requested'; 
      break; 

      // Default landing if nothing provided 
      default: 
       // your code here 
       echo 'select one of the show method'; 

     } 

    } 
} 

而在你的routes.php,你輸入:

$route['news'] = "news/show_news/news"; 
$route['letters'] = "news/show_news/letters"; 
$route['papers'] = "news/show_news/papers"; 

因此,您有第四種選擇,如果沒有提供任何內容,您可以重定向到某個頁面,用戶可以在default部分中選擇一種可用類型的新聞。

+1

謝謝@aspirinemaga 您的回答是正確的 但是,如果我們想要做到這一點,而不使用參數控制器功能,請檢查我的答案 – 2014-10-02 11:54:10

相關問題