Поэтому я настроил свои маршруты так:
$route[':any'] = "main"; $route['products/(:any)'] = "products/product/$1";
Например, www.mysite.com/something идет на главный контроллер, где я занимаюсь «чем-то» . С продуктами я занимаюсь аналогичным образом.
Но, как вы можете видеть после этого, я должен записать все остальные контроллеры с помощью методов, которые я хочу использовать вместо основного контроллера. Есть ли способ автоматически определить, существует ли контроллер, используя контроллер, а не по умолчанию «main» ?
$route['products'] = "products"; $route['admin/user/login'] = "admin/user/login"; $route['admin/user/logout'] = "admin/user/logout"; $route['admin/migrations'] = "admin/migrations"; $route['admin/dashboard'] = "admin/dashboard";
Я не могу поверить в это, так как нашел его в блоге где-то, но я использую следующий код в моих маршрутах.php, в вашем случае я бы поставил его выше $route[':any'] = "main";
$controller_dir = opendir(APPPATH."controllers"); while (($file = readdir($controller_dir)) !== false) { if (substr($file, -4) == ".php" ) { $route[substr($file, 0, -4)."(.*)"] = substr($file, 0, -4)."$1"; } elseif (substr($file, -5) == ".php/") { $route[substr($file, 0, -5)."(.*)"] = substr($file, 0, -5)."$1"; } }
Если мне нужно переопределить любой из них или иметь какие-либо уникальные маршруты, я помещаю их вверху файла route.php выше этого кода.