Zend Framework $ this-> baseURL () her zaman geçerli sayfayı döndürür: (neden

4 Cevap php

bu web sitesini www.fltdata.com kontrol. Nedense yerine ana sayfasına işaret eden olursa olsun gitmek ne sayfa sayfa bağlantısı bu geçerli sayfaya işaret. Bu gibi onun davranıyor çevrimiçi benim localhost üzerinde çalışıyor ancak. $ This-> baseURL (): Ev bağlantının href değeri sadece budur

Burada yanlış nedir ..

=== DÜZENLEME ===

Peki ben aşağıdaki gibi bir yardımcıya oluşturduk:

class Zend_View_Helper_BaseUrl
{
    protected $_baseUrl;

    function __construct()
    {
        $fc = Zend_Controller_Front::getInstance();
        $this->_baseUrl =  $fc->getBaseUrl();
    }

    function baseUrl()
    {
    	return $this->_baseUrl;
    }
}

Ve bu ben $ this-> baseURL çağırdığınız çağrıldığını nedir sanırım olduğunu. Bu sorun olabilir - ben bakmak gerekir - yapılandırma sorunu çeşit olmalıdır - ancak bu kadar değil, çevrimiçi benim localhost çalışmaları tamam?

4 Cevap

Bu ZF kurulum ve eh hakkında daha fazla ayrıntı bilmeden burada yanlış neler söylemek zor url-yeniden-kurulum. Mantık arkasında Zend_Controller_Request_Http::getBaseUrl() - Bu nerede Zend_View_Helper_BaseUrl::baseUrl() için beproxied olacaktır için çağrı yok baseUrl ön denetleyicisi açıkça ayarlanırsa - oldukça karmaşık ve içerir 4 farklı sunucu değişkenleri (ve biraz daha mevcut istek URI belirleme sürecinde).

Bu sorunun üstesinden gelmek için en kolay şey, belki de bootstrap ön-denetleyicisi baseUrl (sunucu kök göreli) ayarlamak olacaktır. Eğer kullanıyorsanız yeni Zend_Application sadece eklemek gerekir-önyükleyebilir

resources.frontController.baseUrl = "/subdir"

yapılandırmanıza.

EDIT

Yardımcınız daha fazla veya daha az ZF ile birlikte orijinal baseUrl-yardımcıyı andırıyor. Özgün bir de Zend_Controller_Front::getBaseUrl() için ve proxy. Eğer ZF hangi sürümünü kullanıyorsunuz? Eğer sevk baseUrl-yardımcıyı kullanmayın bir nedeni var mı?

Eğer açıkça bootstrapping yılında baseUrl ayarlamak denediniz mi?

I usually use a configuration object for base url and then define it in the index.php in public/index.php

    $config = new Zend_Config_Ini(
        APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
    $baseUrl = $config->baseHttp;
    define('BASE_URL', $baseUrl);`

yapılandırmaları / application.ini Ben üretim bölümünün altında bu var

[production]
baseHttp                            = "http://whatever.net"

Bu şekilde ben şimdiye kadar sadece ben kişisel kıvrık almak için değil bir BaseURL istiyorsanız kendi sınıfında sararak daha basit bir yaklaşım olduğunu düşünüyorum baseHttp için diiferent değişken ekleyebilirsiniz gelişimini farklı bir ana url kullanmak gerekiyorsa. Bazen cepten çok OOP olduğunu. Artı yönetmek için bir yükleme programı daha kolay olur. Hatta $ _SERVER değişkeni hostname almak ve http:// ile sarın alabilir

Eğer çağrıldıktan sonra bir bölü kullanmıyveya çünkü Zend Framewveyak her zaman geçerli sayfayı dönen $this->baseUrl();.

Sveyaunu çok gibi görünümünde $this->baseUrl(); çağrıldıktan sonra bir bölü eklemek gidermek için:


The Cveyarect Way

<a href="<?php echo $this->baseUrl() . "/"; ?>">Home Link</a>

veya

<a href="<?php echo $this->baseUrl(); ?>/">Home Link</a>

Şu anda görüntülediğiniz sayfa için bir bağlantı Bölü çizgisi sonuçları atlama.

The Incveyarect Way

<a href="<?php echo $this->baseUrl(); ?>">Home Link</a>

Benim görüşüme $ this-> baseURL kullanırken ben sadece benzer bir sorun vardı. Bu bana geçerli sayfanın url verecek kullanarak bulundu:

baseUrl; ?>"> http://www.yourwebaddress.com/current-page

ve bu (eğik çizgi url sonuna eklenen not) bakılmaksızın geçerli sayfanın bana gerçek BaseURL verecek

baseUrl; ?>/"> http://www.yourwebaddress.com/