2011-06-21 87 views
8

是否有任何更多或更少的標準方法來指定一個路徑,可以創建具有明確指定方案的URL?Zend Framework HTTPS URL

我已經試過了方案規定的here但它不是很好,我有以下幾個原因:

  1. 它不支持基本URL請求屬性。實際上,當明確指定URL方案時,重寫路由器會忽略它。
  2. 需要爲每個依賴於方案的URL指定單獨的靜態路由(由於忽略了基本URL,因此無法將模塊路由與主機名路由鏈接起來)。
  3. 只要請求對象在FrontController中不存在,就需要在引導路由器初始化時手動確定HTTP_HOST。

回答

9

使用SERVERURL和Url視圖助手的組合來構建你的網址,如(查看上下文)

<?php $this->getHelper('ServerUrl')->setScheme('https') ?> 
... 
<a href="<?php echo $this->serverUrl($this->url(array(
    'url' => 'params'), 'route', $reset, $encode)) ?>">My Link</a> 
2

您可以編寫自己的自定義View助手編寫URL。看看在http://www.evilprofessor.co.uk/239-creating-url-in-zend-custom-view-helper/

<?php 

class Pro_View_Helper_LinksUrl 
    extends Zend_View_Helper_Abstract 
{ 
    /** 
    * Returns link category URL 
    * 
    * @param string   $https 
    * @param string   $module 
    * @param string   $controller 
    * @param string   $action 
    * @return string Url-FQDN 
    */ 
    public function linksUrl($https = false, $module = 'www', 
     $controller = 'links', $action = 'index') 
    { 
     $router = Zend_Controller_Front::getInstance()->getRouter(); 

     $urlParts = $router->assemble(array( 
      'module'  => $module, 
      'controller' => $controller, 
      'action'  => $action, 
     ), 'www-index'); 

     $FQDN = (($https) ? "https://" : "http://") . $_SERVER["HTTP_HOST"] . $urlParts; 

     return $FQDN; 
    } 
} 
+0

這是關於如何URL的旋轉中的不同主機之間CDN。問題在於如何使用現有路由來編寫URL,但爲其中的一些指定了HTTPS方案。謝謝。 –

+0

您意識到該方法只會返回'https://'或'http://'而沒有其他 – Phil