2011-06-21 24 views
8

Czy istnieje jakiś mniejszy lub bardziej standardowy sposób określenia trasy, która utworzyłaby adresy URL z wyraźnie określonym schematem?Zend Framework HTTPS URL

Próbowałem rozwiązanie określone here ale nie jest doskonały dla mnie z kilku powodów:

  1. To nie obsługuje baza url właściwość żądania. W rzeczywistości przepisanie routera ignoruje go, gdy schemat URL jest określony jawnie.
  2. Konieczne jest określenie osobnej trasy statycznej dla każdego adresu URL zależnego od schematu (nie jest możliwe połączenie trasy modułu z trasą nazwy hosta, ponieważ adres URL bazy jest ignorowany).
  3. Konieczne jest ręczne określenie HTTP_HOST podczas inicjalizacji routera podczas ładowania początkowego, o ile obiekt żądania nie jest jeszcze dostępny w programie FrontController.

Odpowiedz

9

Użyj kombinację serverURL i zobaczyć URL pomocników skonstruować swoje adresy URL, na przykład (Kontekst)

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

Możesz napisać własny niestandardowy pomocnik View, który pomoże Ci skomponować URL. Spójrz na 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

To jest o tym, jak obracać URL między różnymi komputerami w obrębie CDN. Pytanie dotyczy sposobu komponowania adresów URL przy użyciu istniejących tras, ale dla niektórych z nich należy określić schemat HTTPS. Dziękuję Ci. –

+0

Zdajesz sobie sprawę, że ta metoda zwraca tylko 'https: //' lub 'http: //' i nic więcej – Phil