2017-08-20 71 views
0

我已經實現了網址如下如何在笨獲得動態生成的方法的名稱

myapp.com/profile/username1

myapp.com/profile/username2

MYAPP .com/profile/username3

my routes.php文件包含以下lin的代碼E

$route['profile/(:any)'] = 'profile/user_profile/$profile_method'; 

profile控制器包含此代碼

public function user_profile($profile_method) 
    { 
     echo $profile_method; 
    } 

一切都很好,但問題是我要回的用戶名來進一步處理,此方法返回的參數名稱,而不是用戶名。請告訴我我在哪裏做錯了?

回答

3

只是提示你沒有/用戶名myapp.com/profile/username/1

後嘗試

$route['profile/(:any)'] = 'profile/user_profile/$1'; 
$route['profile/(:any)/(:num)'] = 'profile/user_profile/$1/$2'; 

而不是

$route['profile/(:any)'] = 'profile/user_profile/$profile_method'; 

http://www.codeigniter.com/user_guide/general/routing.html#examples

然後

public function user_profile($profile_method = '', $id = '') 
{ 
    echo $profile_method . ' <br/> ' . $id; 
} 

確保您已經命名自己的控制器和其他文件所糾正只有類和文件名的第一個字母是大寫Profile.php

您可能需要在主目錄中的htaccess刪除索引.php從url也。

https://github.com/wolfgang1983/htaccess_for_codeigniter


Magnus Eriksson評論

CI是使用正則表達式來代替動態url變量,這意味着1 $ =的第一個匹配,$ 2 =第二匹配等。$ - 部分不是普通的php變量,所以你不能將它命名爲你想要的。


+0

它工作正常。但仍然我想知道它是如何工作和更改參數名稱在路線爲什麼影響相關的控制器 –

+0

我已經更新了答案可能有幫助 – user4419336

+2

@SarjilShaikh - CI的路由器使用正則表達式來替換動態url變量,這意味着$ 1 '=第一次匹配,'$ 2' =第二次匹配等。'$'-part不是一個普通的php變量,所以你不能將它命名爲你想要的。 –

相關問題