2017-08-20 2 views
0

J'ai réalisé URL comme suitcomment obtenir le nom de la méthode générée dynamiquement dans CodeIgniter

myapp.com/profile/username1

myapp.com/profile/username2

monapp .com/profile/nom d'utilisateur3

mon fichier routes.php contient lin e code

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

mon contrôleur profile contient ce code

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

tout va bien, mais le problème est que je veux revenir le nom d'utilisateur pour traiter plus, cette méthode renvoie le nom du paramètre au lieu de Nom d'utilisateur. S'il vous plaît dites-moi où je me trompe?

Répondre

3

Il suffit de basculer Vous n'avez pas / après le nom d'utilisateur myapp.com/profile/username/1

Essayez

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

Au lieu de

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

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

Puis

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

Assurez-vous que vous avez nommé vos contrôleurs et d'autres fichiers corrects où seule la première lettre du nom de la classe et le fichier est en majuscules profile.php

Vous devrez peut-être d'avoir un htaccess dans le répertoire principal de supprimer l'index .php d'url aussi.

https://github.com/wolfgang1983/htaccess_for_codeigniter


De Magnus Eriksson commentaire

CI utilise des expressions régulières pour remplacer la variable URL dynamique, ce qui signifie que 1 $ = le premier match, $ 2 = le deuxième match etc. $ - la partie n'est pas une variable php ordinaire, donc vous ne pouvez pas la nommer comme vous voulez.


+0

cela fonctionne très bien. Mais encore je veux savoir comment cela fonctionne et changer le nom du paramètre dans les routes pourquoi affecté sur le contrôleur associé –

+0

J'ai mis à jour répondre cela peut aider – user4419336

+2

@SarjilShaikh - Le routeur de CI utilise des expressions régulières pour remplacer la variable URL dynamique, ce qui signifie que $ 1 '= le premier match,' $ 2' = le second match etc. Le '$' -part n'est pas une variable php ordinaire, donc vous ne pouvez pas le nommer comme vous voulez. –