2012-11-16 39 views
0

我想知道是否有人可以幫助我。CodeIgniter - 動態網址段

在我的codeigniter應用程序中構建了一個論壇,並且我在編寫段如何構建時遇到了一些問題。

作爲每CI userguide的URI如下

www.application.com/CLASS/METHOD/ARGUMENTS 

這是細除我需要結構部分有點不同是建立。

在我的論壇,我有類別和職位,所以要查看一個類別使用以下URL

www.application.com/forums 

這是罰款,它的類名,但我希望有下一段動態的,例如,如果我有一個叫做「mycategory」和名稱後類別「這 - 是 - 我先交」,然後結構應

www.application.com/forums/mycategory/this-is-my-first-post 

我似乎無法做到這一點,因爲按照'mycategory'的文檔需要成爲一種方法,即使我要做類似/ fo的操作朗姆酒/類別/ mycategory /這是我的第一篇文章,它仍然令人困惑。

如果有人曾經做過這樣的事情,他們能否爲我提供一點點的幫助,我很堅持這一點。

乾杯,

+1

在http://codeigniter.com/user_guide/general/routing看看.html – Geert

回答

1

在文件中沒有什麼讓人困惑,但你有點困惑。讓我給你一些建議。
創建在其中創建超鏈接被點擊美景,並在超鏈接你提供這個指令

<a href="www.application.com/forums/category/mycategory/this-is-my-first-post">First Post</a> 

在控制器就可以輕鬆搞定這個

現在你可以繼續進行。 如果你認爲你的需求是別的東西,你可以使用黑客我已經創建了一個動態分配段的方法。

進入系統/核心/ uri.php並添加這個方法

function assing_segment($n,$num) 
{ 
    $this->segments[$n] = $num; 
    return $this->segments[$n]; 
} 

如何使用

$this->uri->assign_segment(3,'mycategory'); 
$this->uri->assign_segment(4,'this-is-my-first-post'); 

如果你有錯誤「您提交已禁用的字符的URI」然後去到application/config/config.php並添加 - 至此

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; 
+0

呵呵,現在第一點有很多意義,我想我必須有很多if語句才能指出人們正確的方向,謝謝 – BigJobbies

0

您可以製作轉發查找樂趣的路線ction。
例如在您的routes.php中添加一行類似於;

$route['product/(:any)/(:any)'] = "forums/cat_lookup/$1/$2"; 

該函數然後會執行數據庫查找來查找類別。

... 
public function cat_lookup($cat, $post) { 
    $catid = $this->forum_model->get_by_name($cat); 
    if ($catid == FALSE) { 
     redirect('/home'); 
    } 
    $post_id = $this->post_model->get_by_name($post); 
    /* whatever else you want */ 

    // then call the function you want or load the view 
    $this->load->view('show_post'); 
} 
... 

此方法將保持URL看起來像你想要的,並處理任何問題,如果該類別不存在。
不要忘記你可以使用下劃線存儲類/職位數據庫,並使用uri_title()功能,使他們漂亮,

0
Set in within config/routes.php 

$route['song-album/(:any)/:num'] = 'Home/song_album/$id'; 

fetch in function with help of uri segment. 

$this->uri->segment(1);