Bonjour,
J'ai un problème dans mes routes, qui ne devrait pas être un problème ...
voilà mon controller :
class Welcome extend CI_Controller{
public function category()
{
$c = $this->uri->segment(2);
$allowed_cat = $this->category_model->getAll();
$exist = false;
foreach($allowed_cat as $cat)
{
if($c == $cat->name)
{
$exist = true;
}
}
if($exist)
{
echo "Cette catégorie existe ! ";
}
else
{
echo "elle existe PAS";
}
}
}
Et voilà mon fichier route :
$route'default_controller'] = "welcome";
$route'404_override'] = '';
$route'(:any)/(:any)'] = 'welcome/produit/$1/$2'; // url sous la forme http://site.com/voiture/honda-truc-machin-chose
$route'test'] = 'welcome/test';
$route'search'] = "welcome/search/";
$route'category/(:any)'] = 'welcome/category/$1';
Je voudrais transformer les url comme "http://site.com/welcome/category/voiture" en "http://site.com/category/voiture" ...
Donc je pense que mes routes sont bonnes, pourtant j'ai une erreur 404 ... une idée ?
EDIT :
J'ai un conflit entre deux routes (3ème et 6ème)
Voici mes routes :
$route'category/(:any)'] = "welcome/category/$1";
$route'([a-z0-9-]+$)'] = "welcome/produit/$1";
J'accède donc à un produit sous la forme www.site.fr/slug-de-mon-produit
J'accède donc à une catégorie sous la forme www.site.fr/voiture/
Je connais pas CI mais je vais émettre une supposition.
Tu as deux routes qui sont en conflit, la 3 et la 6, comme tu l'as dit.
En mettant $route'(:any)/(:any)'], je suppose que "any" veut dire n'importe quoi, or le mot "category" fait partie de ce n'importe quoi.
En tapant category/voiture dans ton url, tu iras sur la première route, qui va te rediriger vers welcome/produit/category/voiture
Et si "welcome" est ton controlleur, alors "produit" devrait être ta méthode. Et je ne vois qu'une méthode category() dans le code que tu nous as laissé
Pas de méthode trouvé = 404