Редиректы и Http
В объекте $mv доступны методы для перезагрузки и перенаправлений между страницами приложения.
Перезагрузка текущей страницы reload()
Данный метод перезагружает текущую страницу и позволяет добавить дополнительные параметры к URL. Исходные GET параметры убираются. Если параметры в метод не передаются то загружается текущая страница без старых GET параметров.
//Файл шаблона в папке views
//Простая перезагрузка текущего URL
$mv -> reload();
//Если форма заполнена без ошибок перезагружаем текущую страницу
//и добавляем GET параметр
if($form -> isValid())
{
...
$mv -> reload('?done');
}
Переход на другую страницу redirect()
Для перехода на другую страницу используется данный метод. Если он вызывается без параметров то происходит переход на главную страницу. Можно добавлять как части ссылок так и GET параметры.
//Переход на URL
$mv -> redirect('/catalog/sale');
//Если пользователь не авторизован переходим на страницу логина
if(!$mv -> clients -> checkAuthorization())
$mv -> redirect('/login');
//Если регистрационная форма заполнена правильно осуществляем переход
//при этом если нам возможно нужно перенаправить пользователя сразу к оформлению заказа
if($form -> isValid())
{
...
$path = isset($_GET['from-order']) ? '/order' : '/registration/complete';
$mv -> redirect($path);
}
Ошибка 404
Если запрошенная страница не может быть определена в конфигурациях URL (подробнее в разделе Общие принципы шаблонов), то в MV показывается собственная страница ошибки 404. Подключаемый файл находится в папке views и изначально имеет название view-404.php.
Метод display404() также может принимать параметр. Если данный параметр положителен то перехода не произойдет.
//Простой вызов 404 ошибки
$mv -> display404();
//Если товар не найден то показать 404 ошибку
//Если товар извлечен и переменная $content - это объект,
//то продолжаем отображение страницы
$content = $mv -> products -> find(['url' => 'very-interesting-book', 'active' => 1]);
$mv -> display404($content);
Методы класса Http
Для удобства разработки существует ряд методов в классе Http.
//Является ли текущий запрос методом GET
Http::isGetRequest();
//Является ли текущий запрос методом POST
Http::isPostRequest();
//Является ли текущий запрос AJAX запросом
//$method - необязательный параметр типа запроса (GET/POST)
//$exit - необязательный параметр, завершить ли скрипт если запрос не AJAX (по умолчанию false)
Http::isAjaxRequest(string $method, bool $exit);
//Получить данные из php://input
//$as_array - раскодировать ли JSON в массив, по умолчанию false
Http::getRawRequestData(bool $as_array);
//Отправить JSON response, $json - массив
Http::responseJson(array $json);
//Отправить XML response, $xml - строка XML
Http::responseXml(string $xml);
////Отправить Text response, $text - строка
Http::responseText(string $text);
//Является ли текущее соединение https
Http::isHttps();
//Является ли текущий хост локальным
Http::isLocalHost();
//Установить cookie
Http::setCookie(string $key, string $value [, array $params = []]);
Предыдущий раздел
Дата и время