URL ViewHelper только собирает пути, абсолютные от имени хоста. так что вам нужно явно префикс ваших ссылок https
<? $url = $view->url(array('some' => 'params') /*, $route, $reset*/) ?>
<a href="https://<?= $_SERVER['HTTP_HOST] ?><?= $url ?>">my explicit https link</a>
вам, возможно, следует создать собственный небольшой помощник по видам, который будет работать для вас, а также проверить, установлен ли HTTP_HOST и т. Д., Возможно, также взять его из конфигурации вместо $ _SERVER.
$ view-> httpsUrl (массив ('some' => 'params') / , $ route, $ reset /);
Чтобы быть уверенным, что заданный запрос должен быть https, можно легко сделать, добавив плагин фронт-контроллера или даже абстрактный класс контроллера, на котором вы базируете весь свой otehr контроллер.
плагин может выглядеть следующим образом
My_Controller_Plugin_HttpBlacklist extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
// when /foo/bar/baz is requested
if (($request->getModuleName() == 'foo' &&
$request->getControllerName() == 'bar' &&
$request->getControllerName() == 'baz')
/* || (conditions for more requests)*/) {
//very basic confifiotn to see if https is enabled, should be done better...
if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != 'on') {
// should be done with Zend_Http_Reponse instead
header('Location: https://'. $_SERVER['HTTP_HOST] . $_SERVER['REQUEST_URI']);
exit;
}
}
}
}
затем просто подключите его
$ frontController-> registerPlugin (new My_Controller_Plugin_HttpBlacklist);