2010-11-08 15 views

Répondre

7
class UsersController extends AppController { 
    public function method_name() { 
    $this->helpers[] = 'MyHelper' 
    } 
} 

Plus sur cette in the documentation.

Espérons que ça aide.

0

Vous pouvez charger des aides à l'aide

$this->helpers[] = 'MyHelper'; 

comme Rob mentionné ci-dessus, mais cela ne fonctionnera pas pour les contrôleurs, car ils ont leurs méthodes d'initialisation et de démarrage qui ont besoin d'être appelé afin pour eux de travailler.

Je suis tombé sur un morceau de code sur le web pour les composants de chargement à l'intérieur d'une action de contrôleur: ComponentLoaderComponent

Oui, il est un composant, mais ce n'est pas très grand donc il ne devrait pas être problème pour l'inclure dans vos contrôleurs. Soit cela ou vous pouvez simplement l'étudier pour voir comment fonctionne le chargement des composants et ensuite écrire votre propre action de contrôleur pour faire la même chose.

0

j'utiliser un composant pour ajouter des aides et des composants à la volée:

$this->Common->addHelper('Tools.Datetime'); 
$this->Common->addHelper(array('Text', 'Number', ...)); 
$this->Common->addComponent('RequestHandler'); 
$this->Common->addLib(array('MarkupLib'=>array('type'=>'php'), ...)); 

etc

Le code complet de ce qui peut être vu dans le billet d'amélioration de CakePHP Je viens d'ouvrir: http://cakephp.lighthouseapp.com/projects/42648-cakephp/tickets/1277

Ou avec balisage php: http://www.dereuromark.de/2010/11/10/loading-classes-on-the-fly/

Il corrige également quelques problèmes mineurs avec la solution postée par mtnorthrop. Les plugins ainsi que les options passées sont maintenant possibles. S'amuser.

+0

pouvez-vous montrer le composant complet? s'il vous plaît – baur79

+0

la seule autre partie qui manque: \t fonction initialize ($ Controller = null) { \t \t $ this-> Contrôleur = $ Contrôleur; \t} – mark

+0

espérons que la mise à jour aide - juste ouvert un ticket pour soutenir cette amélioration – mark