2009-08-26 11 views
6

bu web sitesini ziyaret edin www.fltdata.com.Nedense, ana sayfaya gitmek yerine hangi sayfada devam ederseniz gidin o anki sayfayı işaret benim localhost üzerinde çalışıyor ancak çevrimiçi böyle kendi davranıyor ev bağlantının href değeri adildir.:. $ this-> baseURL()

nedir burada yanlış ..

: === DÜZENLEME ===

Eh ben aşağıda bir yardımcı oluşturduk

Bu, $ this-> baseUrl olarak adlandırdığım zaman ne çağrıldığını tahmin ediyorum. Bu sorun olabilir - ancak yerel forumda iyi çalışıyor ve çevrimiçi değil - bu yüzden bir çeşit yapılandırma sorunu olmalı - nereye bakmalıyım?

cevap

15

ZF kurulumunuz ve e.h. hakkında daha fazla ayrıntı bilmeden burada neyin yanlış gittiğini söylemek zor. URL-yeniden yazma-kurulum. Zend_Controller_Request_Http::getBaseUrl()'un arkasındaki mantık - bu, baseUrl no'lu aramanın ön kontrolörde açıkça ayarlanmadığı durumlarda Zend_View_Helper_BaseUrl::baseUrl() aramasına bağlandığınız yerdir - oldukça karmaşıktır ve 4 farklı sunucu değişkenini (ve mevcut istek URI'sini belirleme sürecinde daha fazlası) içerir .

Bu sorunun üstesinden gelmenin en kolay yolu, önyükleyicinizdeki ön denetleyicideki baseUrl (sunucu köküne göre) ayarlamak olabilir. Eğer -bootstrapping yeni Zend_Application kullanıyorsanız, sadece yapılandırmaya

resources.frontController.baseUrl = "/subdir" 

eklemek gerekecek.

DÜZENLEME

Yardımcınız az ya da çok ZF ile sevk orijinal baseUrl -helper benzer. Orijinali ayrıca Zend_Controller_Front::getBaseUrl()'a vekildir. Hangi ZF sürümünü kullanıyorsunuz? Gönderilen baseUrl - yardımcı programını kullanmamanın bir nedeni var mı?

Önyüklemenize baseUrl'u açıkça ayarladığınızdan emin misiniz?

+0

ben :(oldukça habersiz olduğum Zend üzerinde çok Theres - Ben yardımcı işlevinin yayınlanmıştır - orada yanlış bir şey olduğunu – Ali

+0

Aslında ben sadece bir öğretici ve takip mi ediyordu? siteden bu kadar inşa - sanmıyorum her yerde bootstrap dosyasında baseUrl ayarlamıyorum – Ali

+0

Açıkça baseUrl ayarlamak için denediniz mi? Sonuç nedir? Gönderilen baseUrl-helper kullanmayı denediniz mi? Sonuç nedir? –

6

Genellikle taban URL için bir konfigürasyon nesnesini kullanır ve daha sonra üretim bölümünün

altında bu var yapılandırmaları/application.ini kamu/İndex.php

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

içinde index.php'de bunu tanımlamak

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

seni hiç bir baseurl o sarılarak daha basit bir yaklaşımdır kıvrık almak için değil isterseniz sadece şahsen bence baseHttp için diiferent değişken eklemek olabilir gelişimini farklı bir baz url kullanmanız gerekiyorsa Bu şekilde kendi sınıfı. Bazen OOP çok fazla OOP'dur. Ayrıca, bir yükleme programının yönetilmesini daha kolay hale getirir. $ _SERVER değişkenini ana bilgisayar adını almak için alabilir ve http: //

2

ile sarabilirsiniz. Görünümümde $ this-> baseUrl kullanırken benzer bir sorunla karşılaştım. Bunu kullanarak şu anki sayfanın URL'sini vermiş buldum:

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

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

ve bu bakılmaksızın geçerli sayfanın bana gerçek BaseURL verecekti

baseURL (çizgi not url sonuna eklenen)"

Zend Framework her zaman geçerli sayfayı döndürüyor çünkü $ this-> baseUrl();.

Sorunu gidermek için $ this-> baseUrl(); senin görünümünde şöyle:


Doğru Yol

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

veya sayfaya bir bağlantı içinde eğik çizgi kaldırmak hayata

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

sen' şu anda görüntüleniyor.

Yanlış Yolu

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