Salut tous,

Une simple question:
je me demande quelle est l'utilité de déclarer les helpers html, form alors que cela fonctionne sans?
A moins que je n'ai pas compris l'utilité de déclarer ces helpers ... :s
ex:

var $helpers = array('Html', 'Form', 'Session', 'Ajax', 'Javascript');

Merci d'avance

4 réponses


BenFarhat
Réponse acceptée

En effet, j'ai testé et tu as parfaitement raison
Donc j'ai fait quelques recherches et autres test, et voila la conclusion:
HtmlHelper et FormHelper sont inclus par defaut dans le coeur de cakephp,
si jamais tu redeclares le tableau helpers alors celui ci ecrase le tableau helpers inclus par defaut dans le coeur.

Exemple si jamais au niveau de l'AppController on redéfinit le tableau helpers comme celui:

public $helpers = array('Text','Session','Date','Js'=>array("Jquery"));
Alors tu verras que les utilisations aux helpers Html et Form causeront une erreur ,ca ne fonctionne plus, et la il faut donc les inclure explicitement
C'est vraiment con, ils auraient pu fusionner les tableaux comme au niveau des options de plugins jQuery, il y a peut être une raison caché!

Voila la source

Et mille merci a toi!!! j'ai appris quelques chose de nouveau, bizarre (vu qu'il ne fusionne pas les tableaux) mais nouveau :)

Bienvenu dans le monde de l'orienté objet :) les helpers, et les components sont déclarés au niveau des controleurs, dans ton cas en enlevant cette ligne de ton controller tout fonctionne comme si de rien n'était et c'est normal (du moins si c'est bien ce dont je pense) En faite quand tu veux qu'un élément soit "utilisable" partout il suffit de le le déclarer dans la classe parente, et vu que tous les controlleurs découle de appcontroller, et que c'est helper sont très probablementutilisable par tous tes controlleurs, tu as surement une définition de ces helpers qui y est caché regarde dans - App/Controller/AppController.php tu devrais avoir quelquechose comme ca:[code]<?php App::uses('Controller', 'Controller');

class AppController extends Controller {
public $helpers = array('Html','Form','Text','Session','Date','Js'=>array("Jquery"),.....);[/code]

Mikachu
Auteur

Merci de ta réponse.

" tu as surement une définition de ces helpers qui y est caché"
Justement, je ne l'ai pas vu cette déclaration pour Html et Form.

Le reste je sais merci :) , mais je me demandais pourquoi cela fonctionne sans les déclarer. Normalement cela ne devrait pas fonction pour Form et Html, non ?

Mikachu
Auteur

Super merci. J'y vois plus claire.

Donc tant que l'on déclare pas d'autres helpers, cakephp gère cela par défaut. Mais dès que l'on ajoute un nouveau helper, cela réinitialise la liste et du coup on est obligé de les déclarer pour que cela fonctionne.

(Bon j'aurais du chercher un peu plus lol)