Rota ve / veya modül tabanlı başlatılıyor kaynaklar

1 Cevap php

Ben kaynakların bir demet initilize Zend Framework 1.8/1.9 's Zend_Application ve kaynak sistemini kullanıyorum. ., Yükleme "help.ini" CMS modülü istenen (ve sadece) if ("/ cms") - örneğin, sadece istenen modülü temelinde belirli ini dosyaları yüklemek istiyorum. Sorun bir Zend_Application_Resource_ResourceAbstract sınıfta isteği nesneye erişmek için nasıl emin değilim, olduğunu.

Benim kaynakların biri (CMS için özel güzergahlar başlatma için), ben modülü (aşağıda) almak için bir hacky biraz util kullanmak ve "cms" modül adı eşleşen eğer Ben özel yollar eklemeniz içinde:

/**
 * Grab the module name without a request instance
 *
 * @return string  The module name
 */
public static function getModuleName()
{
    $uri = ltrim($_SERVER["REQUEST_URI"], "/");
    $module = substr($uri, 0, strpos($uri, "/"));
    return $module;
}


$module = Typeoneerror_Util_Strings::getModuleName();

// -- only attach certain routes if using cms module
if ($module == Typeoneerror_Constants::CMS_MODULE)
{
    ...

Ben bu yani bir istek nesne sınıfına geçirilen bir kontrolör eklentisi gibi, daha "Zend-y" olmak istiyorum:

public function preDispatch(Zend_Controller_Request_Abstract $request)
{
    $router = $this->__front->getRouter();
    ...

Herhangi bir fikir?

1 Cevap

Doğrudan soruyu cevaplamak için: ResourceAbstract altsınıfın itibaren, bu nedenle gibi ön denetleyicisi alabilirsiniz:

 $bootstrap = $this->getBootstrap();
 $bootstrap->bootstrap('frontController'); // make sure it's initialized
 $fc = $bootstrap->getResource('frontController');
 // Then I'm sure you know how to get the request from there.

However, talep nesne, tipik olarak Zend_Controller_Front adlandırılan en dispatch() yöntem kadar yapılmamıştır. Yani, kısacası, aradığınız istek nesne henüz mevcut değil. Yani, could manuel Zend_Controller_Request_Http sonra ön denetleyicisi geçmek boyunca bir örneğini oluşturmak.

But, hiçbir şey ya da henüz yönlendirilir olmuştur, bu yüzden istek nesnesini görmeye alıştığınız params hiçbiri doldurulan.

Temelde, olur şey Zend_Application way çok erken uygulamanın yaşam döngüsü içinde ne istediğinizi yapmaktır.

Ben çok ön kontrolör eklenti routeShutdown kanca sizin modül özel yükleme yapıyor tavsiye ederim.