Динамическая маршрутизация Codeigniter не работает

#php #codeigniter #codeigniter-2 #codeigniter-url

#php #codeigniter #codeigniter-2 #codeigniter-url

Вопрос:

Ниже мой код

 $route['default_controller'] = "products";
$route['products/([:any])'] = "category/subcategory";
$route['404_override'] = '';
  

Мне нужно перенаправить, если я получу какой-либо аргумент после продуктов / в категорию / подкатегорию. Я буду использовать подстановочный знак, но он все равно не работает. Выдает ошибку 404 not found.

Вот мой код контроллера категории:-

 if( ! defined('BASEPATH')) exit('No direct script access allowed');
class category extends CI_Controller{
    function category(){
        parent::__construct();
    }

    function index(){
        echo 'index';
    }

    function subcategory(){
        echo 'subcategory'; 
    }
}
  

Комментарии:

1. Вы должны определить переопределение 404 и использовать $route[‘products/([:any])’] = «категория / подкатегория / $ 1»;

Ответ №1:

 $route['product/((d*)[a-zA-Z_]*(d*))'] = 'category/$1';
  

Попробуйте это, это сработает для вас

Комментарии:

1. Благодаря Ankit Ankit … но я хочу перенаправить на категорию / подкатегорию. и я пробовал решения, которые вы даете … но все равно его give 404 не найден.

2. и после продукта есть только маленькая буква / вот почему я использую ([a-z]) или ([:any]).

3. при вызове uri /category / subcategory он вызовет функцию контроллера продукта, имя которой является подкатегорией.

4. маршрут, который я предоставляю вам, работает динамически для всех действий контроллера продукта, вам не нужно писать маршрут для всех действий, которые принадлежат контроллеру продукта, и название действия может быть любым, поэтому я добавляю заглавную букву allso и нумерую все так.

5. $route[‘product / subcategory’] = ‘категория / подкатегория’; этот маршрут специфичен для вашей проблемы

Ответ №2:

Я получаю решения.

 $route['products/(:any)'] = 'products/subcategory/$1';