2011-06-21 34 views
8

Có cách nào tiêu chuẩn nhiều hơn hoặc ít hơn để chỉ định tuyến đường sẽ tạo URL với lược đồ được chỉ định rõ ràng không?Zend Framework URL HTTPS

Tôi đã thử các giải pháp quy định here nhưng nó không phải là tuyệt vời đối với tôi vì nhiều lý do:

  1. Nó không hỗ trợ bất động sản theo yêu cầu địa chỉ cơ sở. Trên thực tế viết lại router bỏ qua nó khi lược đồ URL được quy định rõ ràng.
  2. Cần thiết để chỉ định tuyến tĩnh riêng biệt cho từng URL phụ thuộc vào chương trình (không thể chuỗi tuyến mô-đun với tuyến máy chủ do url cơ sở bị bỏ qua).
  3. Cần thiết để xác định HTTP_HOST theo cách thủ công khi khởi tạo bộ định tuyến trong bootstrap miễn là đối tượng yêu cầu không có trong FrontController.

Trả lời

9

Sử dụng một sự kết hợp của ServerUrl và Url xem những người giúp đỡ để xây dựng các URL của bạn, ví dụ (xem bối cảnh)

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

Bạn có thể viết trình trợ giúp View tùy chỉnh của riêng mình để soạn một số URL. Hãy nhìn vào các 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

Đó là về làm thế nào để xoay URL giữa các host khác nhau trong CDN. Câu hỏi đặt ra là cách tạo URL bằng cách sử dụng các tuyến đường hiện có nhưng chỉ định lược đồ HTTPS cho một số trong số đó. Cảm ơn bạn. –

+0

Bạn nhận ra rằng phương thức chỉ trả về 'https: //' hoặc 'http: //' và không có gì khác – Phil

Các vấn đề liên quan