Parametreler için Zend URL ayrıştırmak nasıl?

2 Cevap php

Ben bir ZF KALAN URL'den GET parametreleri ayıklamak çalışıyorum. Bu geçerli bir istek değil ve ben sadece parametreye ihtiyaç, URL arayın veya rota yürütmek istemiyorum. I parse_url () gibi bir yardımcı işlev arıyor, ama Zend DİNLENME biçimi ediyorum. Biri var mı, yoksa ben tekerleği yeniden icat etmek zorunda mı?

Ben yeni bir Zend_Controller_Request_Http oluşturarak, ancak parametreleri kalabalık olmak değil gibi birkaç şey denedim. Bu geçerli bir HTTP URL.

Edit: İstek üzerine, bir örnek Zend URL:

http://localhost/index/index/param1/foo/param2/bar

Yani sadece bu adresten dışarı param1 ve param2 almaya çalışıyorum.

Düzenleme # 2: Ben bu denedim ama çalışmak için görünmüyor:

$request = new Zend_Controller_Request_Http('http://localhost/home/test/param1/foo/param2/bar');
$front = Zend_Controller_Front::getInstance();
$route = new Zend_Rest_Route($front);
var_dump($route->match($request));

2 Cevap

Nasıl $uri = Zend_Uri::factory( $yourUrl ) 'hakkında? Bkz Zend_Uri.

Edit:
Ah, I see what you mean now. In that case I believe you should try what Gordon suggested. Run your url through the match method of your route.

Muhtemelen (emin değilim ama) gibi bir şey ile yönlendirici yol almak için bir yolu var:

$route = Zend_Controller_Front::getInstance()
                              ->getRouter()
                              ->getRoute( 'theRouteName' );

Ve sonra gibi semething yapın:

$params = $route->match( $yourUrl );

Size parametreleri bir dizi vermelidir .. hangi.

Herkes routes.ini tanımlanan yolları dikkate alınarak saklanan bir URL'den (modül / denetleyici / eylem de dahil olmak üzere) tüm params'ı almaya çalışırken geldim, gerekir:

/**
 * Code kept big just for example purposes
 * Creates a request object, route and injects back the properties parsed
 */
$url = 'http://www.site.com/module/controller/action/param1/test';
$request = new Zend_Controller_Request_Http($url);
Zend_Controller_Front::getInstance()->getRouter()->route($request);

// Module name
$request->getModuleName();

// Controller name
$request->getControllerName();

// Action name
$request->getActionName();

// All parameters
$request->getParams();