Метод Response.Redirect
Response.Redirect URL (URL - универсальный описатель ресурсов)
Параметры:
- URL
- Параметр является универсальным описателем ресурса. Он показывает, када необходимо переадресовать браузер.
Замечание:
Любое вхождение данного метода между тагами
и web-страницы будет проигнорирован. Данный метод может использоваться только в заголовке HTML-страницы. Данный метод передаст заголовок (header) браузеру, если пропущен параметр URL данного объекта в следующем виде:HTTP/1.0 302 Object Moved
Location URL
Метод Response.End
Response.End
Замечание:
Если свойство Response.Buffer был установлен в TRUE (истина), то вызывая метод Response.End будет производить очистку буфера, выталкивая данные из него клиенту. Если вы не хотите выводить данные пользователю, вы должны вызвать следующий метод:
<%
Response.Clear
Response.End
%>
Метод Response.AddHeader
Метод AddHeader добавляет HTML-заголовок с определенными значениями. Этот метод всегда добавляет новый заголовок к ответу клиентскому браузеру. Данный метод не заменяет существующий заголовок новым. Добавленный заголовок не может быть удален.
Данный метод применяется только для "продвинутых" задач.
Response.AddHeader имя_переменной, значение
Параметры:
- имя_переменной
- Название нового параметры HTML-заголовка.
- значение
- Устанавливаемое значение, которое будет запомнено в заголовке.
Замечания:
Для корректной работы метода, имя_переменной не должно содержать символа подчеркивания (_). Набор ServerVariables интерпретирует символ подчеркивания как тире в заголовке. Для примера следующий скрипт принуждает сервер найти параметр из HTML-заголовака, называющийся MY-HEADER.
<% Requset.ServerVariables("HTTP_MY_HEADER") %>
Так как HTTP протокол требует, чтобы все параметры заголовка были переданы до начала тела HTML-страницы, то вы должны вызывать метод AddHeader в вашем скрипте до того, как начнется описание
.... Имеется одно исключение. Если значение свойства Buffer установлено в истину (true), тогда вы можете писать AddHeader в любой точке скрипта, но до первого вызова метода Flush. В противном случае вызод метода AddHeader вызовет ошибку.Следующие два.ASP-файла демонстрируют последнее замечание.
<% Response.AddHeader "Внимание!", "Текст сообщения об ошибке"%>
ваш текст на страничке
В данном примере страница не буферируется. Скрипт работает однако AddHeader вызывается перед тем, как сервер будет производить вывод в HTML клиенту.
<% Response.Buffer = true %>
здесь идет некоторая информация вашей странички...
<%Response.AddHeader "Внимание!", "сообщение об ошибке"%>
<%Response.Flush%>
<%Response.Write("некий текст")%>
Во втором примере страница буферируется и как ресультат сервер не выдает текст клиенту до тех пор, пока не кончится сам скрипт или пока не встретится метод Flush. Вы можете использовать данный метод для того, чтобы отослать несколько копий некоторого параметра заголовка с различными значениями, как с заголовком WWW-Authenticate.
Метод Response.AppendToLog
Метод AppendToLog добавляет строку в конец файла отчета (log-file) web-сервера. Вы можете вызывать этот метод столько раз, сколько вам необходимо. Каждый раз при вызове метода в файл отчета сервера будет записана указанная вами строка.
Response.AppendToLog значение
Параметры:
- значение
- Текст, который будет добавлен к фалу отчета web-сервера. Данная строка не может содержать символ запятой (,). Причем общая длина добавляемой строки не должна превышать 80 символов.
Замечания:
Для использования данной возможности вам необходимо, чтобы опция URI Query была разрешена на панели "расширенных свойств ведения log-файла" для данного web-сервера в IIS.
Метод Response.BinaryWrite
Метод BinaryWrite позволяет записывать указанную информацию в текущий HTTP-вывод без какого-либо преобразования символов. Этот метод удобен для вывода нестроковой информации, такой как двоичные данные, требуемые каким-либо приложением.
Response.BinaryWrite данные
Параметры:
- данные
- Данные, предназначенные для HTTP-вывода.
Если у вас есть объект, порождающий байтовый массив, вы можете использовать следующий вызов данного метода для передачи этого массива какому-либо приложению, запущенному на клиентской машине.
<% Set BinGen = Server.CreateObject(My.BinaryGenerator)
Pict = BinGen.MakePicture
Response.BinaryWrite Pict
%>
Метод Response.Clear
Метод Clear стирает всю забуферированный HTML-вывод. Однако данный метод не стирает информаицю из буфера, связанную с заголовком. Вы можете использовать данный метод для управления ошибками. Однако выполнение данного метода будет приводить к ошибке если свойство Response.Buffer не истина (true).
Свойство Response.CacheControl
Данное свойство предъизменяет установленное по умолчанию значение. Когда вы устанавливаете свойство в значение Public, то Proxy-сервер может кэшировать вывод, генерируемый ASP-ом.
Response.CacheControl [= cache control header]
Параметры:
- Cache control header
- Этот параметр управления заголовком может быть либо Public либо Private.
Свойство Response.CharSet
Свойство CharSet позволяет добавлять название кодовой таблицы символов (к примеру, WINDOWS-1251) в HTML заголовок, строку content-type (тип содержимого).
Response.CharSet имя_кодовой_таблицы
Параметры:
- имя_кодовой_таблицы
- Строка, которая указывает кодовую таблицу для данной HTML-страницы. Наименование данной кодовой таблицы будет добавлено в заголовок HTML-файла под параметром "content-type".
Для ASP-страницы, для которой не использовано свойство Response.Charset параметр "content-type" в заголовке будет следующим:
Content-type:text/html
Если же ASP-файл содержит компанду
<%Response.Charset("Windows-1251")%>
то в заголовке поле content-type будет иметь вид
Content-type:text/html; charset=Windows-1251
Замечание:
Данная функция вставляет любую строку в заголовок и не проверяет ее правильность.
Если страничка содержит несколько тагов Response.Charset, то каждый последующий будет заменять значение на свое собственное.
Свойство Response.ContentType
Свойство ContentType позволяет указывать вид (тип) содержимого HTML-файла. Если данное свойство не использовано, то по умолчанию принимается text/html.
Response.ContentType [=тип_содержимого]
Параметры:
- тип_содержимого
- Строка, описывающая тип содержимого HTML. Эта строка обычно имеет вид "тип/подтип", где тип это основная категория содержимого и подтип - указывает тип содержимого. Для получения полного списка поддерживаемых типов - обратитесь к документации к браузеру или спецификации HHTP.
Следующий пример илюстрирует установку типа содержимого как Формат Определения Каналов (Push-каналы).
<% Response.ContentType = "application/x-cdf" %>
Второй пример демонстрирует установку свойства в наиболее общеизвестные значения.
<% Response.ContentType = "text/HTML" %>
<% Response.ContentType = "image/GIF" %>
<% Response.ContentType = "image/JPEG" %>
Свойство Response.Expires
Свойство Expires указывает промежуток времени пока страница HTML закешированная браузером считается не утратившей силу (срок хранения). Если пользователь запрашивает закешированную страницу у браузера, у которой не вышел срок "хранения", то браузер возвращает ее прямо из своего кэша.
Response.Expires [=число]
Параметры:
- число
- Количество времени в минутах перед тем, как страница будет считаться "просроченной". Установка этого значения в 0 заставляет данную страницу становится "просроченной" незамедлительно.
Замечание:
Если данное свойство установлено более чем один раз на странице, то используется самое маленькое значение.
Свойство Response.ExpiresAbsolute
Свойство ExpiresAbsolute указывает время и дату, после которого страница HTML закешированная браузером считается утратившей силу (вышел срок хранения). Если пользователь запрашивает закешированную страницу у браузера, у которой не вышел срок "хранения", то браузер возвращает ее прямо из своего кэша. Если время указано (а дата указана), то "срок хранения" данной страницы истекает в полночь этого дня. Если ни время ни дата не указаны, то значение присваивается в соответствии с днем и временем, когда был запущен скрипт.
Response.ExpiresAbsolute [= [дата] [время]]
Параметры:
- дата
- Указывает на дату истечения "срока хранения". Формат даты должен соответствовать стандврту RFC-1123.
- время
- Указывает на время, когда у страницы истекает "срок хранения". Данное значение переводится в формат GMT (время по Гринвичу) перед тем, как заголовок будет передан клиенту.
Замечание:
Если данное свойство определяется более одного раза на странице, то момент истечения "срока хранения" принимается самым скорым из всех указанных значений.
<% Response.ExpiresAbsolute = #May 31,1998 13:30:15# %>
Свойство Response.IsClientConnected
Данное свойство является значение только для чтения, то есть этому свойству нельзя присваивать никаких значений. Это свойство указывает на то, подключен ли клиент или уже не подключен к серверу, определенное в последнем из Response.Write.
Response.IsClientConnected ()
Замечание:
Это свойство позволяет вам определять моменты, когда пользователь подключен, и когда отключен от сервера. К примеру, длина периода времени между тем когда сервер ответил и когда клиент сделал запрос дает уверенность в том, что клиент еще подключен и есть смысл продолжить выполнение скрипта.
<%
"посмотрим, подключен ли пользователь
If Not Response.IsClientConnected Then
"получаем номер сессии и закрываем сессию
Shutdownid = Session.SessionID
"подготовка к закрытию сессии
Shutdown(Shutdownid)
End If
%>
Свойство Response.Pics
Данное свойство позволяет добавить значение поля pics-label в заголовок ответа.
Response.PICS (PICSLabel)
Параметры
- PicsLabel
- Строка, которая преобразована в формат PICS - метку. Значение указанное в этом параметре добавляется в заголовок ответа в поле PICS.
Для ASP-файла включающего:
<% Response.PICS("(PICS-1.1
labels on " & chr(34) & "1997.01.05T08:15-0500" until "1999.12.31T23:59-0000"
ratings (v 0 s 010 n 0))%>
Следующий заголовок будет сформирован
PICS-label:(PICS-1.1 labels
on "1997.01.05T08:15-0500" until "1999.12.31.T23:59-0000" rating (v 0 s 0 1 0 n 0))
Замечание:
Это свойство позволяет вам вставлять любые строки в заголовок, независимо от корректности строк.
Если страничка содержит множество тагов содержащих Response.PICS, то каждая последующая будет заменять значение предыдущей.
Свойство Response.Status
Данное свойство позволяет указывать строку состояния, возвращаемую сервером. Значения статуса определены в спецификации HTTP.
Response.Status = описание_состояния
Параметры
- описание_состояния
- Строка, которая содержит и трех цифровой номер, который указывает код статуса и также краткое описание данного кода. К примеру, 310 Move Permanently.
Следующий пример показывает установку статуса:
<% Response.Status = "401 Unauthorized" %>
Замечание:
Используйте это свойство чтобы модифицировать строку, возвращаемую сервером.
Допустим, нам нужно получить данные с сайта, сбор которых вручную нецелесообразен или невозможен из-за объёма.
В таком случае мы можем автоматизировать процесс, используя инструменты, описанные далее.
Библиотека requests
Python-библиотека для выполнения запросов к серверу и обработки ответов. Фундамент скрипта для парсинга и наше основное оружие.
Пользуясь данной библиотекой мы получаем содержимое страницы в виде html для дальнейшего парсинга.
import
requests
response
=
requests
.
get
("https://ya.ru"
)
# get-запрос
print
(response
.
text
)
# вывод содержимого страницы
payload
=
{
"key1"
:
"value1"
,
"key2"
:
"value2"
}
response
=
requests
.
get
("http://httpbin.org/get"
,
params
=
payload
)
# запрос с параметрами
headers
=
{
"user-agent"
:
"my-app/0.0.1"
}
response
=
requests
.
get
(url
,
headers
=
headers
)
# запрос с определенными html заголовками
API
Application programming interface - программный интерфейс приложения, предоставляемый владельцем веб-приложения для других разработчиков.
Отсутствие API, способного удовлетворить наши нужды - первое в чем стоит убедиться прежде чем бросаться анализировать исходный код страницы и писать для нее парсер.
Множество популярных сайтов имеет собственное api и документацию, которая объясняет как им пользоваться.
Мы можем использовать api таким образом - формируем http-запрос согласно документации, и получаем ответ при помощи requests.
BS4
Beautifulsoup4 - это библиотека для парсинга html и xml документов. Позволяет получить доступ напрямую к содержимому любых тегов в html.
from
bs4
import
BeautifulSoup
soup
=
BeautifulSoup
(raw_html
,
"html.parser"
)
print
(soup
.
find
("p"
,
class_
=
"some-class"
)
.
text
)
# вывод содержимого тэга "p" классом "some-class"
Selenium Web Driver
Данные на сайте могут генерироваться динамически при помощи javascript.
В таком случае спарсить эти данные силами requests+bs4 не удастся. Дело в том, что bs4 парсит исходный код страницы, не исполняя js.
Для исполнения js кода и получения страницы, идентичной той, которую мы видим в браузере, можно использовать selenium web driver - это набор драйверов для различных браузеров, снабжающийся библиотеками для работы с этими драйверами.
А что делать, если там авторизация?
session = requests.Session()
data = {"login_username":"login", "login_password":"password"}
url = "http://site.com/login.php"
response = session.post(url, data=data)
А что, если сайт банит за много запросов?
- Установить задержку между запросами:
response = requests.get(url, timeout=(10, 0.01)) # таймаут на соединения, таймаут на чтение (в секундах)
- Притвориться браузером, используя selenium web driver или передав содержимое заголовка user-agent, формируя запрос:
user_agent = ("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) "
"Gecko/20100101 Firefox/50.0")
request = requests.get(url, headers={"User-Agent":user_agent})
Генерация ответа из контроллеров
После того, как контроллер завершил обработку запроса, обычно требуется сгенерировать ответ. Когда мы создаем низкоуровневый контроллер, непосредственно реализуя интерфейс IController, то должны возложить на себя ответственность за каждый аспект обработки запроса, включая генерацию ответа клиенту.
Например, для отправки HTML-ответа потребуется создать и скомпоновать HTML-данные, после чего отправить их клиенту с использованием метода Response.Write(). Аналогично, чтобы переадресовать браузер пользователя на другой URL, понадобится вызвать метод Response.Redirect() и передать ему необходимый URL. Оба подхода демонстрируются в коде, приведенном в примере ниже, в котором показаны расширения класса BasicController, который мы создали в одной из предыдущих статей с помощью реализации интерфейса IController:
Using System.Web.Mvc;
using System.Web.Routing;
namespace ControllersAndActions.Controllers
{
public class BasicController: IController
{
public void Execute(RequestContext requestContext)
{
string controller = (string)requestContext.RouteData.Values["controller"];
string action = (string)requestContext.RouteData.Values["action"];
if (action.ToLower() == "redirect")
{
requestContext.HttpContext.Response.Redirect("/Derived/Index");
}
else
{
requestContext.HttpContext.Response.Write(string.Format("Контроллер: {0}, Метод действия: {1}",
controller, action));
}
}
}
}
Тот же самый подход можно применять и в случае наследования контроллера от класса Controller. Класс HttpResponseBase, который возвращается при чтении свойства requestContext.HttpContext.Response в методе Execute(), доступен через свойство Controller.Response, как показано в примере ниже, где приведены расширения класса DerivedController, также созданного ранее с помощью наследования от класса Controller:
Using System;
using System.Web;
using System.Web.Mvc;
namespace ControllersAndActions.Controllers
{
public class DerivedController: Controller
{
public ActionResult Index()
{
// ...
}
public void ProduceOutput()
{
if (Server.MachineName == "ProfessorWeb")
Response.Redirect("/Basic/Index");
else
Response.Write("Контроллер: Derived, Метод действия: ProduceOutput");
}
}
}
Метод ProduceOutput() использует значение свойства Server.MachineName для принятия решения о том, какой ответ отправлять клиенту. ("ProfessorWeb" - это имя моей машины разработки.)
Хотя такой подход генерации ответа пользователю работает, с ним связано несколько проблем:
Классы контроллеров должны содержать сведения о структуре HTML или URL, что усложняет чтение и сопровождение классов.
Контроллер, который генерирует ответ напрямую в вывод, трудно поддается модульному тестированию. Понадобится создать имитированные реализации объекта Response и затем иметь возможность обрабатывать вывод, получаемый из контроллера, для определения, что он собой представляет. Это может означать, например, необходимость в реализации разбора HTML-разметки на ключевые слова, что является долгим и утомительным процессом.
Такая обработка мелких деталей каждого ответа, сложна и чревата ошибками. Некоторым программистам нравится абсолютный контроль, обеспечиваемый построением низкоуровневого контроллера, но обычно это очень быстро обрастает сложностями.
К счастью, в MVC Framework имеется удобное средство, которое решает все упомянутые проблемы - результаты действий. В последующих разделах приведены объяснения концепции результатов действий и показаны различные способы ее применения для генерации ответов из контроллеров.
Результаты действий
Результаты действий в MVC Framework используются для отделения заявлений о намерениях от выполнения намерений (извиняюсь за тавтологию). Концепция покажется простой после того, как вы освоитесь с ней, но она требует определенного времени на понимание из-за некоторой доли косвенности.
Вместо того чтобы иметь дело напрямую с объектом Response, методы действий возвращают объект класса, производного от ActionResult
, который описывает, каким должен быть ответ из контроллера - например, визуализация представления либо перенаправление на другой URL или метод действия. Однако (это и есть та самая косвенность) ответ напрямую не генерируется. Взамен создается объект ActionResult, который MVC Framework обрабатывает для получения результата после того, как был вызван метод действия.
Система результатов действий является примером шаблона проектирования Command (Команда) . Этот шаблон представляет сценарии, в рамках которых вы сохраняете и передаете объекты, описывающие выполняемые операции.
Когда инфраструктура MVC Framework получает объект ActionResult от метода действия, она вызывает метод ExecuteResult()
, определенный в классе этого объекта. Реализация результатов действий затем работает с объектом Response, генерируя вывод, который соответствует вашему намерению. Чтобы продемонстрировать это в работе, создадим папку Infrastructure и добавим в нее новый файл класса по имени CustomRedirectResult.cs со специальной реализацией ActionResult, показанной в примере ниже:
Using System.Web.Mvc;
namespace ControllersAndActions.Infrastructure
{
public class CustomRedirectResult: ActionResult
{
public string Url { get; set; }
public override void ExecuteResult(ControllerContext context)
{
string fullUrl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
context.HttpContext.Response.Redirect(fullUrl);
}
}
}
Этот класс основан на манере работы класса System.Web.Mvc.RedirectResult. Одно из преимуществ открытого кода MVC Framework связано с возможностью исследовать внутреннюю работу чего угодно. Класс CustomRedirectResult намного проще своего эквивалента в MVC, но его вполне достаточно для целей этой статьи.
При создании экземпляра класса RedirectResult мы передаем URL, на который должен быть перенаправлен пользователь. Метод ExecuteResult(), который будет выполнен инфраструктурой MVC Framework по завершении метода действия, получает объект Response для запроса через объект ControllerContext, предоставляемый инфраструктурой, и вызывает либо метод RedirectPermanent(), либо метод Redirect() (это в точности отражает то, что делалось внутри низкоуровневой реализации IController в примере ранее в статье).
Использование класса CustomRedirectResult проиллюстрировано в примере ниже, в котором представлены изменения, которые внесены в контроллер Derived:
// ...
using ControllersAndActions.Infrastructure;
namespace ControllersAndActions.Controllers
{
public class DerivedController: Controller
{
public ActionResult Index()
{
// ...
}
public ActionResult ProduceOutput()
{
if (Server.MachineName == "MyMachineName")
return new CustomRedirectResult { Url = "/Basic/Index" };
else
{
Response.Write("Контроллер: Derived, Метод действия: ProduceOutput");
return null;
}
}
}
}
Обратите внимание, что мы были вынуждены изменить результат метода действия для возвращения ActionResult. Мы возвращаем null, если не хотим, чтобы инфраструктура MVC Framework предпринимала что-либо, когда наш метод действия был выполнен, что и делалось в случае невозвращения экземпляра CustomRedirectResult.
Модульное тестирование контроллеров и действий
Многие части MVC Framework спроектированы так, чтобы упростить проведение модульного тестирования, и это особенно справедливо в отношении действий и контроллеров. Для такой поддержки существует несколько причин:
Тестировать действия и контроллеры можно за пределами веб-сервера. Доступ к объектам контекста осуществляется через их базовые классы (такие как HttpRequestBase), что легко поддается имитации.
Для тестирования результатов метода действия проводить разбор HTML-разметки не понадобится. Чтобы удостовериться в получении ожидаемых результатов, можно проинспектировать возвращаемый объект ActionResult.
Эмуляция клиентских запросов не нужна. Система привязки моделей MVC Framework позволяет писать методы действий, которые получают входные данные в своих параметрах. Для тестирования метода действия необходимо просто вызвать его напрямую и предоставить соответствующие значения параметров.
В следующих статьях, посвященных генерации данных из контроллеров, будет показано, как создавать модульные тесты для разных видов результатов действий.
Не забывайте, что модульное тестирование - это только часть общей картины. Сложное поведение в приложении возникает, когда методы действий вызываются последовательно. Модульное тестирование лучше всего сочетается с другими подходами к тестированию.
Теперь, когда известно, каким образом работает специальный результат действия по перенаправлению, можно переключиться на его эквивалент, предлагаемый MVC framework, который обладает большими возможностями и тщательно протестирован в Microsoft. Необходимое изменение контроллера Derived приведено ниже:
// ...
public ActionResult ProduceOutput()
{
return new RedirectResult("/Basic/Index");
}
// ...
Из метода действия был удален условный оператор, а это означает, что после запуска приложения и перехода на URL вида /Derived/ProduceOutput браузер будет перенаправлен на URL вида /Basic/Index. Чтобы упростить код метода действия, класс Controller включает удобные методы для генерации различных видов объектов ActionResult. Таким образом, к примеру, мы можем получить тот же эффект, что и в примере выше, возвратив результат метода Redirect():
// ...
public ActionResult ProduceOutput()
{
return Redirect("/Basic/Index");
}
// ...
В системе результатов действий нет ничего особо сложного, но в конечном итоге она помогает получить более простой, чистый и согласованный код, который является легким в чтении и проведении модульного тестирования. Например, в случае с перенаправлением можно просто проверить, что метод действия возвращает экземпляр RedirectResult, свойство Url которого содержит ожидаемую цель.
В инфраструктуре MVC Framework определено множество встроенных типов результатов действий, которые описаны в таблице ниже:
Встроенные типы ActionResult
Тип
|
Описание
|
Вспомогательные методы класса Controller
|
---|
ViewResult
|
Визуализирует указанный или стандартный шаблон представления
|
View()
|
PartialViewResult
|
Визуализирует указанный или стандартный шаблон частичного представления
|
PartialView()
|
RedirectToRouteResult
|
Выдает перенаправление HTTP 301 или 302 на метод действия или указанную запись маршрута, генерируя URL согласно конфигурации маршрутизации
|
RedirectToAction()
RedirectToActionPermanent()
RedirectToRoute()
RedirectToRoutePermanent()
|
RedirectResult
|
Выдает перенаправление HTTP 301 или 302 на заданный URL
|
Redirect()
RedirectPermanent()
|
ContentResult
|
Возвращает браузеру неформатированные текстовые данные, дополнительно устанавливая заголовок content-type
|
Content()
|
FileResult
|
Передает двоичные данные (такие как файл на диске или байтовый массив в памяти) напрямую в браузер
|
File()
|
JsonResult
|
Сериализирует объект.NET в формат JSON и отправляет его в качестве ответа. Ответы подобного вида более часто генерируются при использовании средств Web API и AJAX
|
Json()
|
JavaScriptResult
|
Отправляет фрагмент исходного кода JavaScript, который должен быть выполнен браузером
|
JavaScript()
|
HttpUnauthorizedResult
|
Устанавливает код состояния ответа HTTP в 401 (означает "не авторизован"), который заставляет действующий механизм аутентификации (аутентификация с помощью форм или аутентификация Windows) предложить посетителю войти
|
Нет
|
HttpNotFoundResult
|
Возвращает ошибку HTTP с кодом 404 - Not found (не найдено)
|
HttpNotFound()
|
HttpStatusCodeResult
|
Возвращает указанный код HTTP
|
Нет
|
EmptyResult
|
Ничего не делает
|
Нет
|
Все эти типы являются производными от класса ActionResult, и многие из них имеют удобные вспомогательные методы в классе Controller. Мы продемонстрируем использование этих типов результатов в последующих статьях.
Для получения экземпляра этого класса используйте вызов метода wa()->getResponse() , например:
Wa()->getResponse()->getHeader("Content-type")
Методы
public function addCss
($url, $app_id = false
)
Добавляет URL в список CSS-файлов. Все добавленные URL CSS-файлов могут быть получены в шаблоне Smarty с помощью метода {$wa->css()} .
Параметры
- $url
Относительный URL CSS-файла. Если указано значение параметра $app_id , то следует указать URL файла относительно URL директории с файлами соответствующего приложения. В противном случае относительный URL следует указывать относительно директории установка фреймворка.
- $app_id
Идентификатор приложения.
Пример
wa()->getResponse()->addCss("css/myapp.css", "myapp");
public function addGoogleAnalytics
($str
)
Добавляет фрагмент JavaScript-кода для Google Analytics. Код Google Analytics (включая добавленный данным методом) подключается в HTML-шаблоне сайта с помощью метода {$wa->headJs()} .
Параметры
public function addHeader
($name, $value, $replace = true
)
Добавляет заголовок, который будет отправлен сервером в ответ на запрос пользователя. Все добавленные таким способом заголовки, будут отправлены пользователю при выполнении метода .
Параметры
Пример
wa()->getResponse()->addHeader("Content-type", "application/json");
public function addJs
($url, $app_id = false
)
Добавляет URL в список JavaScript-файлов. Все добавленные URL JavaScript-файлов могут быть получены в шаблоне Smarty с помощью метода {$wa->js()} .
Параметры
- $url
URL файла с JavaScript-кодом. Если указано значение параметра $app_id , то следует указать URL файла относительно URL директории с файлами соответствующего приложения. В противном случае относительный URL следует указывать относительно директории установка фреймворка.
- $app_id
Идентификатор приложения.
Пример
wa()->getResponse()->addJs("js/myapp.js", "myapp");
public function getCss
($html = true, $strict = false
)
Возвращает список ранее добавленных ссылок CSS-файлов.
Параметры
- $html
Флаг, обозначающий необходимость вернуть HTML-код подключения CSS-файлов. Если указано false , метод возвращает массив URL таких файлов.
- $strict
Флаг, обозначающий использование XHTML-формата вместо HTML, когда для параметра $html указано значение true .
Пример
wa()->getResponse()->getCss();
public function getHeader
($name = null
)
Возвращает значение заголовка ответа.
Параметры
Пример
wa()->getResponse()->addHeader("Content-type", "application/json");
wa()->getResponse()->getHeader("Content-type");
Результат
application/json
public function getJs
($html = true
)
Возвращает список ссылок JavaScript-файлов ответа.
Параметры
Пример
wa()->getResponse()->getJs();
public function getMeta
($name = null
)
Возвращает содержимое МЕТА-данных: заголовок страницы ("title"), МЕТА-теги keywords ("keywords"), description ("description").
Параметры
Пример
wa()->getResponse()->getMeta("keywords");
public function getStatus
()
Возвращает ранее установленный статус ответа сервера.
Пример
wa()->getResponse()->setStatus(200);
wa()->getResponse()->getStatus();
Результат
200
public function getTitle
()
Возвращает заголовок (TITLE) страницы.
Пример
wa()->getResponse()->setTitle("Мой интернет-магазин");
wa()->getResponse()->getTitle();
Результат
Мой интернет-магазин
public function redirect
($url, $code = null
)
Выполняет перенаправление пользователя на указанный URL.
Параметры
- $url
URL, на который необходимо перенаправить пользоватвеля.
- $code
Код ответа сервера, которым должно сопровождаться перенаправлением.
Пример
wa()->getResponse()->redirect("http://otherdomain.ru/", 301);
public function sendHeaders
()
Выполняет отправку ранее установленных заголовков.
Пример
wa()->getResponse()->addHeader("Content-type", "application/json");
wa()->getResponse()->sendHeaders();
public function setCookie
($name, $value, $expire = null, $path = null, $domain = "", $secure = false, $http_only = false
)
Устанавливает значение записи cookie с помощью PHP-функции setcookie .
Параметры
- $name
Идентификатор записи.
- $value
Значение записи.
- $expire
Время истечения срока действия.
- $path
Путь к «поддиректории» URI, в пределах которого действует значение записи.
- $domain
Доменное имя, для которого действиет значение записи.
- $secure
Флаг, обозначающий доступность записи только в случае передачи значения по протоколу HTTPS.
- $http_only
Флаг, обозначающий доступность значения записи только через протокол HTTP и недоступность средствами клиентских скриптов (JavaScript).
Пример
wa()->getResponse()->setCookie("code", $code, time() + 30 * 86400, null, "", false, true);
public function setMeta
($name, $value = null
)
Устанавливает значение МЕТА-данных. Это значение доступно в шаблонах Smarty с помощью метода {$wa->meta()} .
Параметры
Пример
wa()->getResponse()->setMeta("keywords", $keywords);
public function setStatus
($code
)
Устанавливает статус ответа сервера.
Параметры
Пример
wa()->getResponse()->setStatus(404);
public function setTitle
($title
)
Устанавливает заголовок (TITLE) страницы. Содержимое заголовка доступно в шаблонах Smarty с помощью метода {$wa->title()} .
Похожие статьи