9
votes

Symfony: Est-il possible d'installer des composants?

Il n'y a pas de colonie () pour les composants! Je sais mais peut-être qu'il y a une autre façon de le faire?

(la question semble être à propos d'un cadre PHP: http://www.symfony-project.org / )


0 commentaires

4 Réponses :


5
votes

Composants Ne manipulez pas les modèles, vous ne pouvez utiliser que partiels. Si vous devez retourner une partielle spécifique de l'intérieur de votre classe de composants, vous pouvez faire quelque chose comme ceci:

return get_partial('module/action', array('paramName' => $paramValue));


0 commentaires

10
votes

Il n'y a pas de méthode Setemplate sur SFComponents. Vous avez essentiellement 3 options:

  1. Nommez votre composant de la même manière que le partiel que vous souhaitez que le composant soit rendu. Cela peut ne pas être possible si vous avez plusieurs composants, vous souhaitez partager le même modèle.
  2. Créez une partielle avec le même nom de votre composant et y inclure la partielle là-bas. C'est-à-dire que si vous aviez un composant avec une méthode ExecuteFoo () que vous souhaitiez rendre le modèle _bar.php , appelez simplement include_partiale ('Bar', $ vars) à l'intérieur de _foo.php .
  3. Chargez la partialHelper et rendez la partielle manuellement à l'intérieur de la méthode de l'exécution des composants et que le rappel du composant SFVIEW :: NONE.

3 commentaires

Mais méfiez-vous SFVIEW :: Aucun sur un composant ne cachera pas le composant, au moins dans 1.0 - il vaut vraiment la peine de vérifier que le fichier de cache est toujours généré.


Êtes-vous sûr que le composant ne sera toujours pas mis en cache même si le texte est rendu à l'intérieur de celui-ci? Si cela est vrai, alors oui, n'utilisez pas la méthode 3 si vous voulez un composant en cache-capable (je n'ai jamais utilisé la méthode 3, moi-même.)


Avec Symfony 1.4, vous devez utiliser include_partiale ('bar', $ var) au lieu de include_partiale ('bar', $ args) .



6
votes

Pour contourner cela, je fais:

echo get_component('module', 'action', $this->getVarHolder()->getAll());
return sfView::NONE;


2 commentaires

Cela m'a sauvé un tas de fichiers de modèles vides.


Je me luttais avec retour get_partial ('module / partiel'); mais cela ne contournerait pas le modèle ordinaire de la composante. Maintenant, grâce à cette réponse, cela fonctionne comme ceci pour moi: ECHO GET_PARTIAL ('Module / Partial'); Retour SFVIEW :: NONE;



0
votes

Ceci a fonctionné pour moi: xxx

évidemment, le modèle doit être dans le même module.


0 commentaires