Итак, я пытаюсь установить и запустить Kohana. Я очень новичок в этом и фреймворки в целом (хотя я немного использовал CakePHP).
В любом случае ... в моем файле начальной загрузки у меня есть это:
// 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];
Теперь я хочу подключиться к своей базе данных и в основном посмотреть, равен ли первый параметр $ param [0] aka $ controller одной из моих страниц "категориям" (соответствует моей таблице 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;
То, что я хотел выполнить вышеупомянутые работы. Если я отображаю $ is_category, я вижу, что при совпадении категорий возвращается значение 1, а если я отображаю $ controller, я вижу, что «category» установлен как контроллер.
Вот мой код фактического метода маршрутизации ...
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] (фильмы или игры и т. Д.) Не найден на этом сервере». 1014 *
Имейте в виду, у меня нет класса контроллера для $ param [0], если он соответствует категории, потому что я хочу использовать класс контроллера "категории". Если я захожу на domain.com/kohana/categories, он работает нормально.
У кого-нибудь есть какие-нибудь идеи / знаете обходной путь?
Дополнение № 1
Я понял, что, хотя контроллер категорий вызывается и вызывается правильное действие, он все еще требует, чтобы контроллер «показывает» для отображения. Я добавил контроллер шоу с самой базовой информацией (шаблон, контент и т. Д.), И он показывался правильно. Есть ли обходной путь в классе маршрутизации, чтобы назначенный контроллер показывал? Как я уже сказал, я говорю ему, к какому контроллеру обращаться, и он это подтверждает, но на самом деле не идет к нему.