2011-06-21 18 views
8

明示的に指定されたスキームでURLを作成するルートを指定する標準的な方法はありますか?私は解決策を試してみたZend Framework HTTPS URL

hereを指定したが、それはいくつかの理由のために私のために優れたではありません。

  1. それはベースURL要求プロパティをサポートしていません。 URLスキームが明示的に指定されている場合、ルータは実際に書き換えルータを無視します。
  2. 各スキーム依存URLに別々の静的ルートを指定する必要があります(ベースURLが無視されるため、hostnameルートでモジュールルートを連鎖させることはできません)。
  3. リクエストオブジェクトがFrontController内にまだ存在しない限り、ブートストラップのルータ初期化時にHTTP_HOSTを手動で決定する必要があります。

答えて

9

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

URLを構成するための独自のカスタム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を構築するためのserverURLとURLビューヘルパーの組み合わせを使用して見てみましょうCDN。問題は、既存のルートを使用してURLを作成する方法ですが、その一部にはHTTPSスキームを指定することです。ありがとうございました。 –

+0

このメソッドは、「https://」または「http://」だけを返し、それ以外は返さない – Phil