Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2011, 23h45   #1
Invité de passage
 
Inscription : août 2009
Messages : 20
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 20
Points : 2
Points : 2
Par défaut component héritant d'un component et affichage du template parent

Bonjour,

Je travaille actuellement sur un projet où un component hérite d'un autre component généré dans le cache grâce aux classes sfGenerator. L'idée est de pouvoir afficher le template du component parent en appelant l'enfant.

J'ai réussi à faire tourner cette configuration quand le component enfant est dans les plugins. Sitôt qu'il est dans les répertoires du projet, ce que je cherche à faire ne fonctionne pas. Je n'arrive pas à déterminer la cause, je sais juste que ce que j'essaie de faire a déjà marché.

Je vais essayer de créer une configuration simplissime pour illustrer mon problème.

Nous avons une appli frontend avec 3 modules a, b et test.

a et b sont censés être des modules components, b héritant de a (nous allons y venir).
test est un modules classique appelable depuis l'url (actions.class)

Visuellement, l'arborescence du frontend ressemble à ça :



Voici le components.class.php du component "a" dans le frontend :
Code :
1
2
3
4
5
6
7
8
9
<?php
 
class aComponents extends sfComponents
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->a = 'toto';
  }
}
Le template _index.php ressemble à ça :

Quand il est appelé il affiche donc "toto".

Voici le components.class.php du component "b" :
Code :
1
2
3
4
5
6
7
8
<?php
 
require_once sfConfig::get('sf_plugins_dir').'/testPlugin/modules/a/actions/components.class.php';
 
class bComponents extends aComponents
{
 
}
Soit enfin le module test avec l'action.class :
Code :
1
2
3
4
5
6
7
8
9
<?php
 
class testActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
 
  }
}
Son template indexSuccess.php
Code :
<?php include_component('a', 'index') ?>
Dans ce cas-ci nous verrons apparaître "toto" lors de l'appel de l'action test/index

par contre avec
Code :
<?php include_component('b', 'index') ?>
on obtient
Citation:
500 | Internal Server Error | sfRenderException
The template "_index.php" does not exist or is unreadable in "".
Parce qu'apparemment on ne peut peut pas appeler le template _index.php de "a" depuis le component "b". Enfin, en général, parce que pour moi ça a marché une fois quand j'ai appelé un component du plugin héritant d'un component autogénéré dans le cache, mais je ne sais plus pourquoi...

Si quelqu'un a une idée à propos de ce problème, je lui serai très reconnaissant de partager sa solution.

Merci à ceux qui se pencheront sur mon soucis.
mika34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h34.


 
 
 
 
Partenaires

Hébergement Web