2011-06-21 22 views
8

Açıkça belirtilmiş bir şema ile URL'leri oluşturacak bir rota belirtmenin daha fazla veya daha az standart yolu var mı? Ben çözüm denedimZend Framework HTTPS URL

here belirtilen ancak çeşitli nedenlerden dolayı benim için mükemmel değil:

  1. Bu taban url isteği özelliğini desteklemiyor. URL şeması açıkça belirtildiğinde, yönlendiriciyi yeniden yazmayı yeniden yazma.
  2. Her şemaya bağımlı URL için ayrı bir statik rota belirtmek gerekir (ana url ihmal edildiğinden ana makine adı rotası ile modül rotasını zincirlemek mümkün değildir).
  3. Henüz FrontController içinde istek nesnesi bulunmadığı sürece, bootstrap içindeki yönlendirici başlatması üzerine HTTP_HOST değerini manuel olarak belirlemek gerekir.

cevap

9

bir göz atın, örneğin (görünüm bağlam)

<?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'u oluşturmak için kendi özel View yardımcınızı yazabilirsiniz. içinde farklı bilgisayarlar arasında URL döndürmek için nasıl ilgili URL'lerinizi oluşturmak için ServerUrl ve URL görünümü yardımcıları bir arada kullanın 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

CDN. Soru, URL'leri mevcut rotalar kullanarak nasıl oluşturacağınız, ancak bunlardan bazıları için HTTPS şemasını nasıl belirleyeceğinizle ilgilidir. Teşekkür ederim. –

+0

Bu yöntemin yalnızca https: // 'veya' http: // 've başka hiçbir şey döndürmediğini fark edersiniz. – Phil