Обнаружение браузера и Zend MVC - PullRequest
0 голосов
/ 18 марта 2010

У меня есть PHP-приложение, использующее инфраструктуру Zend MVC. Точка входа для каждого запроса к приложению находится в /public/index.php.

У меня есть класс Browser, в котором есть функции, чтобы проверить, совместим ли браузер пользователя с приложением или нет.

Моя дилемма в том, что index.php выполняется для каждого вызова контроллера. Таким образом, есть вероятность, что этот файл будет выполняться несколько раз на одной странице, и, следовательно, перенаправление становится проблемой. Какой лучший способ решить проблему с циклом?

Спасибо

Ответы [ 3 ]

1 голос
/ 18 марта 2010

Что касается вашей "дилеммы", которая звучит совсем как другая проблема, я бы действительно избегал вызова index.php при каждом вызове контроллера. Это ваша основная проблема, я думаю. Если вы должны, я полагаю, вы можете использовать сеанс для отслеживания вызовов пользователя на различные страницы.

Но index.php должен быть ТОЛЬКО точкой входа, и любая дальнейшая логика кода, которая будет выполняться, должна полностью не знать о ее существовании.

Относительно определения браузера:

Насколько мне известно, в настоящее время нет установленного компонента ZF, который бы определял для вас браузер. Есть два способа сделать это. Одним из них является проверка браузера на основе строки User Agent с использованием $_SERVER["HTTP_USER_AGENT"].

Другой способ, конечно же, это обнаружение на стороне клиента. Большинство библиотек JS предоставляют методы для этого; как известно большинству пользователей jQuery, jQuery устарел в своих jQuery.browser функциях, но в настоящее время они все еще доступны.

Как указано в http://docs.jquery.com/Utilities/jQuery.browser, однако, рекомендуется вместо обнаружения браузера на стороне клиента проверять наличие необходимых вам функций.

1 голос
/ 22 марта 2010

Вы должны сделать это в плагине фронт-контроллера. Существует несколько методов, которые вызываются в зависимости от того, в какой точке процесса отправки вы находитесь.

посмотрите на http://framework.zend.com/manual/en/zend.controller.plugins.html

0 голосов
/ 18 марта 2010
$i = 0;

if ($i === 0)
{
   // put everything currently in index.php into here

   $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...