Роутинг на детальную страницу
Каким образом реализовать обработку урлов если они из двух частей? Например, раздел и статья? index/*/ это не работает, возвращает 404. Может надо где-то еще помимо routes.php что-либо делать?
"index" => "view-index.php", "index/*/" => "view-index-detail.php",
В что у вас содержится в файле view-index-detail.php? скорее всего проблема там
Вряд ли там проблема. Т.к. по таким роутам все работает корректно "news/" => "news/view-news.php",
"news/*/" => "news/view-news-details.php",
Но стоит news заменить на index, то не работает.
Пример: "news" => "news/view-news.php", - Этот роут работает корректно.
А этот "news/*/" => "news/view-news-details.php", - не работает, возвращает 404 страницу. Главная страница вообще подразумевает что у нее будет урлы из двух и более частей?
<? // $record = $mv->news->defineNewsPage($mv->router); // $mv->display404($record); // $mv->seo->mergeParams($record, "name"); include $mv->views_path . "main-header.php"; ?> <div class="wrapper"> <div id="content"> <div class="breadcrumbs"> <a href="<? echo $mv->root_path; ?>">Главная</a> <a href="<? echo $mv->root_path; ?>news/">Новости</a> </div> <h1><? //echo $record->name; ?></h1> <div class="news-inside-date"><? //echo I18n::formatDate($record->date); ?></div> <div class="news-inside-content"> <? // echo $mv->news->cropImage($record->image, 383, 258); // echo $record->content; ?> </div> <div id="previous-next"> <!-- <? //echo $mv->news->displayPreviousAndNext($record->id, $record->date); ?> --> </div> </div> </div> <? include $mv->views_path . "main-footer.php"; ?>
'videos/*/*/' => '/videos/videos-index-detail.php',
Такие урлы невозможны, для них подходит 'videos->' => '/videos/videos-index-detail.php',
Но вот хочу для Index страницы также сделать - как итог не работает
'index->' => '/videos/videos-index-detail.php',
Попробуйте в файле view-index-detail.php в самом начале поставить код exit("123");
И теперь если при переходе в браузере на /index/test/ вы на экране увидите 123, то значит маршрутизация работает правильно и дело в методе defineNewsPage и последующем переходе на 404 страницу методом $mv->display404($record).
И тогда нужно смотреть метод defineNewsPage и как там происходит разбор URL.
Смотрите если это делать не на главной получается белая страница и на ней 123. Как и предполагалось. Но тут http://localhost:8080 отдает страницу "news/view-news.php", , a http://localhost:8080/test/ не отдает "news/view-news-details.php" выдает только 404
"index" => "news/view-news.php", "index/*/" => "news/view-news-details.php", Не работает "index" => "news/view-news.php", "index->" => "news/view-news-details.php", Тоже не работает В начале добавил <? exit("123"); // $record = $mv->news->defineNewsPage($mv->router); // $mv->display404($record); // $mv->seo->mergeParams($record, "name");
У вас видимо http://localhost:8080/test/ ведет на view-default.php а потом на 404.
Подробнее об этом тут https://mv-framework.ru/obshie-principy-shablonov/
Вам наверно лучше сделать так
"index/news/*/" => "news/view-news-details.php"
Понимаете, какое дело. Мне нужно будет чтобы на главной был уже необходимый функционал. index/news не подойдет моим требованиям. т.к. я хотел вторую часть урла использовать под код раздела.
Если вы хотите чтобы http://localhost:8080/test/ показывал шаблон вьюхи news/view-news-details.php, то шаблоны URL вида index/*/ и index-> лучше не использовать, они работать не будут. При обработке http://localhost:8080/test/ вначале пойдет поиск в config/routes.php по точному совпадению, например "test/" => "view-test-page.php" и если оно найдено не будет, то произойдет вызов шаблона view-default.php, и если b там страница не будет найдена то вызовется 404.
Таким образом, в вашем случае остается только вариант обработать http://localhost:8080/test/ во view-default.php. Попробуйте уже там сделать включения шаблона news/view-news-details.php
<? //view-default.php if(...) { include $mv -> views_path."news/view-news-details.php"; exit(); } $content = $mv -> pages -> defineCurrentPage($mv -> router); $mv -> display404($content); $mv -> seo -> mergeParams($content, "name"); ?>