Итак, я пытаюсь установить и запустить Conhana. Я очень новичок в этой области и вообще в целом (хотя я немного использовал CakePHP).Kohana: Запрошенный URL не найден
... В любом случае в моем файле начальной загрузки у меня есть это:
// GET PARAMS -- This basically splits domain.com/kohana/controller/action/param1/etc
// into: controller | action | param1 | etc
$requestURI = explode('/', $_SERVER['REQUEST_URI']);
$scriptName = explode('/',$_SERVER['SCRIPT_NAME']);
for($i= 0;$i < sizeof($scriptName);$i++){
if ($requestURI[$i] == $scriptName[$i]){
unset($requestURI[$i]);
}
}
$param = array_values($requestURI);
$controller = @ $param[0];
$action = @ $param[1];
$param1 = @ $param[2];
$param2 = @ $param[3];
$param3 = @ $param[4];
$param4 = @ $param[5];
$param5 = @ $param[6];
$param6 = @ $param[7];
Теперь я хочу, чтобы подключиться к базе данных и в основном увидеть, если первые пары ака $ пары [0] ака $ контроллер равно на одну из моих страниц «категории» (соответствует моей таблице category_pages). Если это категория, то я хочу использовать контроллер «категории» по умолчанию, иначе контроллер должен быть любым параметром $ param [0]. Это означает, что если я перейду на сайт domain.com/kohana/movies или domain.com/kohana/games, он отобразит контроллер категорий, иначе domain.com/kohana/users отобразит пользовательский контроллер.
$db = Database::instance();
$getiscategory = DB::select('*')->from('categories_pages')->where('directory', '=', $controller)->execute();
$is_category = $getiscategory->count();
if($is_category){
$controller = "categories";
}
$controller = (empty($controller)) ? 'index' : $controller;
$action = (empty($action)) ? 'index' : $action;
Что я хотел выполнить над работами. Если я echo $ is_category, я вижу, что значение 1 возвращается, когда есть соответствие категории, и если я эхо-контроллер $, я вижу, что в «категориях» установлен контроллер.
Вот мой код для фактического метода маршрутизации ...
Route::set(
'custom',
'(<controller>(/<action>(/<param1>)(/<param2>(/<param3>(/<param4>(/<param5>(/<param6>)))))))'
)->defaults(array(
'controller' => $controller,
'action' => $action,
'param1' => $param1,
'param2' => $param2,
'param3' => $param3,
'param4' => $param4,
'param5' => $param5,
'param6' => $param6,
));
К сожалению, я не знаю, где это маршрутизации. Как я уже упоминал, $ controller возвращается ранее как категории, которые являются правильными, но все же я получаю сообщение об ошибке «HTTP_Exception_404 [404]: запрошенный URL $ param [0] (фильмы или игры и т. Д.) Не найден на этом сервере».
Имейте в виду, что у меня нет класса контроллера для $ param [0], если он соответствует категории, потому что я хочу использовать класс контроллеров категорий. Если я перейду в domain.com/kohana/categories, он отлично работает.
У кого-нибудь есть идеи/знать обход?
Дополнение # 1
я понял, что даже если контроллер категории называется и правильное действие называется, он по-прежнему требуя «показывает» контроллер для отображения. Я добавил контроллер шоу с самой базовой информацией (шаблоном, контентом и т. Д.), И он показал правильно. Есть ли работа в классе маршрутизации, чтобы показать назначенный контроллер? Как я уже сказал, я говорю, что контроллер должен пойти, и он это признает, но на самом деле он не подходит.
Прошу простить это, но я думаю, что вы полностью отключены от кода в своем бутстрапе. Причина, по которой вы используете фреймворк, не должна делать такие вещи. Вы можете получить все сегменты маршрута (или params) с помощью '$ this-> request-> param()' в вашем действии. http://kohanaframework.org/3.2/guide/kohana/routing # request-parameters И для вашей реальной проблемы с маршрутизацией прочтите документацию больше и ответ от Lethargy. Вы можете указать маршрут без '' в своем URI и установить контроллер по умолчанию в 'defaults()'. –