Best practice to create absolute URLs with Zend framework?

前端 未结 5 1790
南笙
南笙 2021-02-01 23:26

Is there a best practice for creating absolute URLs using the Zend framework? I wonder if there is some helper or if this would just be concatenating the scheme, host, etc. from

相关标签:
5条回答
  • 2021-02-01 23:45

    Use the below method.

    <a href="<?php echo $this->serverUrl() . $this->url('application', ['action' => 'detail']) ?>">

    0 讨论(0)
  • 2021-02-01 23:50

    phpfour's way is OK, but you have to check for https://, ftp:// and mailto: too... :)

    I prefefer having all urls root-absolute (/files/js/jquery.js). The "hardcore zend way" is

    <?php 
    // document root for example.com is in /htdocs 
    // but application's index.php resides in /htdocs/myapp/public
    echo $this->baseUrl('css/base.css'); 
    //will return /myapp/public/css/base.css
    
    echo $this->serverUrl() . $this->baseUrl('css/base.css');
    //will return http://www.example.com/myapp/public/css/base.css
    
    echo '//' . $this->getHelper('ServerUrl')->getHost() . $this->baseUrl('css/base.css');
    //will return protocol relative URL //www.example.com/myapp/public/css/base.css
    
    0 讨论(0)
  • 2021-02-01 23:59

    In my applications, I keep a "baseUrl" in my application config and I assign that to registry on bootstrapping. Later I use the following View Helper to generate the URL:

    <?php
    
    class Zend_View_Helper_UrlMap
    {
        public function UrlMap($original)
        {
            $newUrl  = $original;
            $baseUrl = Zend_Registry::get('baseUrl');
    
            if (strpos($newUrl, "http://") === false) {
                $newUrl = $baseUrl . $newUrl;
            }
    
            return $newUrl;
        }
    }
    

    Benefit: I can make any change on all the URLs in the view from one place.

    Hope this helps.

    0 讨论(0)
  • 2021-02-02 00:01

    I wouldnt use $_SERVER, I would use the values from Zend_Controller_Request_Http::getServer($keyName); (or the direct getters on the request object when that applies - i forget which ones are direct members of the object and which ones need to be accessed with getServer). Technically these are the exact same values, but IMO its better access it the Zend way than to use the raw PHP access. But yes catting those together should get you what you need. This is actually the way i did it for an SSL controller plugin/url helper.

    There could be a better way though...

    0 讨论(0)
  • 2021-02-02 00:07

    Without mvc

    echo $this->serverUrl() . $this->baseUrl('cass/base.css');
    

    or with mvc

    echo  $this->serverUrl() . $this->url(array('controller'=>'index','action'=>'index'),null,true);
    
    0 讨论(0)
提交回复
热议问题