Zend framework ile mutlak URL'ler oluşturmak için en iyi uygulama?

4 Cevap php

Zend framework kullanarak mutlak URL'ler oluşturmak için en iyi uygulama var mı? Ben bazı yardımcı olup olmadığını merak ya da bu sadece o $ _SERVER değişkeni düzeni, ev sahibi, vb birleştirerek ve olsaydın Zend tarafından oluşturulan göreli yolunu ekleyin.

4 Cevap

phpfour yoludur Tamam, ama https:// ftp://akımları ve mailto kontrol etmek zorunda: çok ... :)

Ben sahip prefefer tüm adresler kök-mutlak (/files/js/jquery.js). "Hardcore zend yolu"

<?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

Mvc olmadan

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

veya mvc ile

echo  $this->serverUrl() . $this->url(array('controller'=>'index','action'=>'index'),null,true);

Benim uygulamaları, benim uygulama config bir "baseURL" tutmak ve ben bootstrapping üzerinde kayıt için bu atayın. Daha sonra URL oluşturmak için aşağıdaki Görünüm Yardımcısı kullanmayın:

<?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;
    }
}

Faydası: Ben bir yerden görünümdeki tüm URL'ler üzerinde herhangi bir değişiklik yapabilirsiniz.

Umarım bu yardımcı olur.

Bunu geçerli zaman istek nesne üzerinde Zend_Controller_Request_Http::getServer($keyName); (veya doğrudan alıcılar değerleri kullanmak istiyorsunuz, $ _SERVER cekti'kullanma - i olanlar ile erişilmesi gereken olanları nesnenin doğrudan üyesi olan unutmak ve hangi getServer). Teknik bunlar aynı değerler, ancak IMO onun daha iyi erişim, ham PHP erişimini kullanmak daha Zend yolu. Ama evet birlikte bu catting ne gerek almalısınız. Bu aslında ben bir SSL kontrolörü eklenti / url yardımcı için yaptım yoludur.

Olsa daha iyi bir yolu var olabilir ...