Как перенаправить на индекс с помощью приложения Phalcon php Micro и пользовательской маршрутизации
Я создаю Ajax-управляемое веб-приложение с использованием Php и платформы Phalcon.
Когда пользователь заходит на сайт, его запрос будет обработан в моем методе pageNotFound, который будет отображать index.php
представление, и это представление вызовет мой сервер, добавив Page
префикс к текущему URL для загрузки HTML в div.
Так www.mywebsite.com/home
позвоню на мой сервер www.mywebsite.com/Page/Home
который будет отображать HTML в DIV.
Я хочу перенаправить пользователя на домашнюю страницу, если он пытается получить доступ к Page
URL-адрес непосредственно с его URL-адреса в браузере.
Но когда я пытаюсь перенаправить его, URL становится: ww.mywebsite.com/public/index/index
Кто-то знает, почему Фалькон его так делает? И что может быть возможным решением моей проблемы?
Единственный способ, которым я смог сделать то, что хотел, с помощью следующего кода:
header("location:/");
Вот мой оригинальный код.
<?php
try {
//Register an autoloader
$loader = new \Phalcon\Loader();
$loader->registerDirs(
array(
'../app/controllers/',
'../app/models/'
)
)->register();
//Create a DI
$di = new Phalcon\DI\FactoryDefault();
$app = new \Phalcon\Mvc\Micro();
$di->set('view', function() {
$view = new Phalcon\Mvc\View\Simple();
$view->setViewsDir('../app/views/');
return $view;
}, true);
$app->setDI($di);
$app->map('/', function () use ($app) {
echo $app['view']->render("index/index");
});
$app->map('/Page/Home', function () use ($app) {
if ($app->request->isAjax()) {
echo $app['view']->render("page/Home");
}
else{
//It means that the user is trying to access the page manually in the url input
//I would like to redirect him to my index page / page not found.
//But when I try to do it redirect me to the following url
// http://localhost/public/index/index
$app->response->redirect("index/index")->sendHeaders();
}
});
$app->notFound(function () use ($app) {
//Ajax "Page" request that is not found
if ($app->request->isAjax() && $app->request->isGet()) {
echo $app['view']->render("page/pageNotFound");
}
//Ajax "API" request that is not found
elseif ($app->request->isAjax() && $app->request->isPost()) {
$app->response->setStatusCode(400, "Bad Request");
$app->response->send();
}
//We render the index page, which will run the ajax call that will surely check
// if it's a real Page not found error.
else{
echo $app['view']->render("index/index");
}
});
$app->handle();
} catch(\Phalcon\Exception $e) {
echo "PhalconException: ", $e->getMessage();
}
1 ответ
//Setup a base URI so that all generated URI
$di->set('url', function () use ($di, $config) {
$url = new \Phalcon\Mvc\Url();
$dispatcher = $di->getShared('dispatcher');
$url->setBaseUri($config->url->baseUrl);
return $url;
});
после этого вы можете использовать URL-сервис для создания URL