Lors de la migration d'un version précédente vers Zend Framework 0.8 ou plus récent
vous devriez prendre note de ce qui suit.
Zend_Controller
Les principaux changements introduits dans la version 1.0.0RC1 sont l'ajout et
l'activation par défaut du plugin
ErrorHandleret de
l'aide d'action
ViewRenderer.
Veuillez lire la documentation de chacun des éléments directement pour apprendre leur
fonctionnement et quels effets, ils peuvent avoir sur vos applications.
Le plugin ErrorHandler
est exécuté pendant
postDispatch() vérifiant la présence d'exceptions, et redirigeant vers le
contrôleur de gestion d'erreur spécifié. Vous pouvez le désactiver en réglant le
paramètre noErrorHandler
du contrôleur frontal :
$front->setParam('noErrorHandler', true);
L'aide d'action ViewRenderer
automatise l'injection de vues dans les
contrôleurs d'action en tant qu'autogénération des scripts de vues suivant l'action
courante. Le principal problème que vous pourriez rencontrer intervient quand vous avez
des actions qui ne rendent pas de scripts de vues ni ne font suivre ou redirige, alors
ViewRenderer
va tenter de rendre un script de vue basé sur le nom de
l'action.
Il existe plusieurs possibilités pour mettre à jour votre code. Dans un premier
temps, vous pouvez globalement désactiver ViewRenderer
dans votre fichier
d'amorçage du contrôleur frontal avant toute distribution :
// En considérant que $front est une instance de Zend_Controller_Front
$front->setParam('noViewRenderer', true);
Cependant, ceci n'est pas une bonne stratégie à long terme, car il apparaît
aisément que vous devrez écrire plus de code.
Quand vous serez prêt à utiliser la fonctionnalité ViewRenderer
, il
y a plusieurs choses à vérifier dans votre code de contrôleur. Premièrement, regardez
vos méthodes d'actions (les méthodes se terminant par "Action"), et déterminez ce que
chacune d'elle réalise. Si rien de ce qui suit n'est réalisé, vous devrez réaliser des
changements :
-
Appel de $this->render()
-
Appel de $this->_forward()
-
Appel de $this->_redirect()
-
Appel de l'aide d'action Redirector
Le changement le plus simple est la désactivation de l'auto-rendu pour cette
méthode :
$this->_helper->viewRenderer->setNoRender();
Si vous trouvez qu'aucune de vos méthodes d'actions n'effectue de rendu, ne font
suivre, ou redirige, vous pouvez préférer mettre la ligne suivante dans la méthode
preDispatch() ou init() :
public function preDispatch()
{
// désactive l'auto-rendu des scripts de vues
$this->_helper->viewRenderer->setNoRender()
// ... faire autre chose ...
}
Si vous appelez render(), et que vous utilisez la
structure de dossier modulaire
conventionnelle, vous voudrez modifier votre code pour utiliser
l'auto-rendu :
-
Si vous rendez de multiples scripts de vues dans une seule action, vous
n'avez rien à modifier.
-
Si vous appelez simplement render() sans aucun argument,
vous pouvez effacer ces lignes.
-
Si vous appelez render() avec des arguments, et que vous ne
réalisez pas ensuite d'exécution de code ou effectuez le rendu de scripts de
vues multiples, vous pouvez changer ces appels par
$this->_helper->viewRenderer()
.
Si vous n'utilisez pas la structure de dossier modulaire conventionnelle, il
existe une variété de méthodes pour paramétrer le chemin de base des vues et les
spécifications du chemin vers les scripts ainsi vous pourrez utiliser
ViewRenderer
. Veuillez lire la
documentation de
ViewRendererpour plus d'informations sur ces méthodes.
Si vous utilisez un objet de vue issu du registre, ou que vous personnalisez
votre objet vue, ou que vous utilisez une implémentation de vue différente, vous pouvez
vouloir injecter ViewRenderer
dans cet objet. Ceci peut être réalisé
facilement à tout moment.
Il existe plusieurs manières de modifier ViewRenderer
, incluant le
réglage d'un script de vue différent à rendre, la spécification d'un remplaçant pour
tous les éléments remplaçables d'un chemin de script de vues (incluant le suffixe), le
choix d'un segment nommé de la réponse à utiliser, et plus encore. Si vous n'utilisez
pas la structure de dossier modulaire conventionnelle, vous pouvez tout de même
associer différentes spécifications de chemin à ViewRenderer
.
Nous vous encourageons à adapter votre code pour utiliser
ErrorHandler
et ViewRenderer
puisqu'il s'agit maintenant de
fonctionnalités natives.
Zend_Currency
Créer un objet Zend_Currency est devenu plus simple. Vous
n'avez plus besoin de passer un script ou de le mettre à NULL, le
paramètre script est optionnel et peut être spécifié par la méthode
setFormat().
$currency = new Zend_Currency($currency, $locale);
La méthode setFormat() prend maintenant en paramètre un tableau
d'options. Ces options sont permanentes et écrasent les précédentes déjà présentes. La
nouvelle option "precision" a été intégrée :
-
position : Remplacement de l'ancien
paramètre "rules"
-
script : Remplacement de l'ancien
paramètre "script"
-
format : Remplacement de l'ancien
paramètre "locale" qui n'affecte plus de nouvelle monnaie, mais seulement un
format de nombre.
-
display : Remplacement de l'ancien
paramètre "rules"
-
precision : Nouveau paramètre
-
name : Remplacement de l'ancien
paramètre "rules". Affecte le nom complet de la monnaie.
-
currency : Nouveau paramètre
-
symbol : Nouveau paramètre
$currency->
setFormat(array $options);
La méthode toCurrency() ne supporte plus les paramètres optionnels
"script" et "locale". A la place, elle accepte un tableau d'options qui sera de la même
forme que celui utilisé par setFormat
.
$currency->
toCurrency($value,
array $options);
Les méthodes getSymbol(), getShortName(),
getName(), getRegionList() et getCurrencyList()
ne sont plus statiques. Elles retournent les valeurs affectées dans l'objet, si on ne
leur passe pas de paramètre.