XML Zend çerçevesinde Set varsayılan bağlam

4 Cevap php

I'm using Zend framework, and most of the action controller that I have return XML response. In order to do this, I have to initialize context switching and provide URL suffix "?format=xml" to call each action.

Bu varsayılan yapmak için herhangi bir yolu var mı? Yani bu son eki her URL'yi eklemek zorunda değilsiniz?

Saygılar, Andree.

4 Cevap

EXTRA EXTRA .. BT HAKKINDA TÜM OKUYUN!

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

ContextSwitch and AjaxContext bakabilirsiniz

(Edit) kullanmak istiyorum:

Bazı durumlarda, kullanılan içerik zorlamak isteyebilirsiniz; Örneğin, yalnızca içerik anahtarlama aktif ise XML bağlamı izin vermek isteyebilirsiniz. Sen initContext için bağlam geçerek yapabilirsiniz ():

$ ContextSwitch-> initContext ('xml');

Ne açıkça denetleyicisi init() yönteminde parametre format ayarı hakkında?

$this->getRequest()->setParam('format', 'xml');

... there has to be a not so lazy way of doing this, though ...

Alternatif olarak, bir varsayılan olarak ayarlamak için aşağıdaki gibi bir şey kullanabilirsiniz, ama yine de diğer bağlamlarda "format" parametresi üzerinden ayarlanabilir izin:

$ajaxContext = $this->_helper->getHelper('AjaxContext');
$currentContext = $ajaxContext->getCurrentContext();
if (empty($currentContext)) {
    $ajaxContext->initContext('xml');
}

Bu kod tüm eylemler için varsayılan bağlam ayarlamak edeceğini kontrolörleri init (), yerleştirilebilir. Ayrıca, işlem başına bazında varsayılan içeriği ayarlamak için bireysel eylemlerle yerleştirilebilir.

Eğer bu ile "format" dışında bir parametre adını değiştirmek unutmayın:

$ajaxContext->setContextParam('type');

Sonra '/ denetleyicisi / eylem / tip / xml' ile eylem diyebiliriz.

Her denetleyici init param ayarlamak zorunda istemiyorsanız, ayrıca Global yol param olarak param ayarlayabilirsiniz. Lütfen bootstrap yılında yönlendirici örneği ve çağrı çekin

$router->setGlobalParam('format', 'xml');

Yoksa adlandırılmış params / format / xml sonra, tanımladığınız rotalarda varsayılan ayarlayın, ya da muhtemelen her yerde url varsayılan yönlendirici kullanıyorsanız olabilir.