Pour une question de rapidité j'ai mis en place pour le moment la
première solution.
J'ai ajouté la ligne de code suivante dans le fichier /config/
ProjectConfiguration.class.php :

require dirname(__FILE__).'/../lib/sfRichTextEditorFCK.class.php';

Par contre j'ai placé cette ligne de code après :

sfCoreAutoload::register();

et sa fonctionne par contre si j'écris la ligne en premier comme tu le
recommande il y a une erreur.
Merci encore pour ton aide ++

On 21 juil, 10:19, naholyr <[email protected]> wrote:
> N'oublie pas de nous donner les résultats de tes tests ;)
>
> On 20 juil, 10:35, eddie <[email protected]> wrote:
>
> > Merci pour ta réponse précise et très détaillé.
> > Je vais regarder les 2 solutions et voir celle qui est la mieux
> > adapté.
>
> > Merci encore de ton aide ++
>
> > On 18 juil, 19:21, naholyr <[email protected]> wrote:
>
> > > Juste pour info, ce n'est pas à proprement parler d'un helper que tu
> > > parles (il n'est pas chargé via "use_helper" mais pas l'autoloader, et
> > > il ne s'agit pas d'un set de fonctions mais d'une classe).
>
> > > Il se trouve que Symfony a deux niveaux d'autoload :
> > > - le "core_autoloader" qui charge les éléments du noyau et qui est
> > > prioritaire.
> > > - le reste, celui qu'on connait et qui va chercher dans nos dossiers
> > > lib.
>
> > > Le problème est que les classes chargées par l'autoloader "core" ne
> > > peuvent être surchargées par la méthode de copie dans "lib/" (la liste
> > > des classes core sont dans une propriété de sfCoreAutoload, en dur).
> > > Pour savoir si la classe qui t'intéresse en fait partie, il faut aller
> > > voir la propriété "sfCoreAutoload->$classes" (fichier "/path/to/
> > > symfon1.2/lib/autoload/sfCoreAutoload.class.php", ligne 151).
>
> > > En l'occurrence, pas de bol, sfRichTextEditorFCK est bien présent dans
> > > cette liste, ligne 266.
>
> > > Je vois deux solutions pour que ta modification marche :
> > >  - Ajouter "require dirname(__FILE__).'/../lib/
> > > sfRichTextEditorFCK.class.php;" à la première ligne de ton fichier
> > > "config/ProjectConfiguration.class.php". Ainsi la classe sera chargée
> > > via TON fichier avant même que l'autoloader ne soit lancé, et ainsi il
> > > ne *devrait* (je n'ai pas tester) pas aller la chercher lui-même.
> > > C'est a priori la méthode la plus simple et la plus rapide si elle
> > > fonctionne.
> > >  - Une autre solution peut-être plus propre (quoique ça mérite
> > > reflexion) serait de surcharger l'autoloader et d'utiliser le tien au
> > > lieu de celui par défaut. Cela nécessite un peu plus de travail par
> > > contre...
>
> > > Du coup je pense que la solution 1, si elle marche, et est accompagnée
> > > d'un petit commentaire qui explique pourquoi il y a un require à cet
> > > endroit, est largement suffisante ;)
> > > Note : Utilise bien un require comme ça si un jour tu déplaces ou
> > > vires ton fichier tu auras une fatal error qui te mènera à cette
> > > ligne, précédée d'un commentaire qui explique le pourquoi du comment.
> > > C'est mieux qu'une erreur muette dont tu chercherais en vain
> > > l'origine...
>
> > > ----------
>
> > > Si toutefois tu préfères la solution 2, tu peux l'implémenter en
> > > créant ton autoloader "config/myCoreAutoload.class.php" (je le mets
> > > dans "config/" pour ne pas confondre avec une classe "standard").
> > > Le gros problème sera que comme c'est basé sur des méthodes statiques,
> > > tu vas devoir faire des vilains copier-coller parce que l'héritage de
> > > méthodes statiques, PHP ne connait pas...
>
> > > <?php
> > > require "/path/to/symfony/lib/autoload/sfCoreAutoload.class.php";
> > > class myCoreAutoload extends sfCoreAutoload
> > > {
>
> > >   // Surcharge du constructeur, on se contente de remplacer quelques-
> > > unes des règles d'autoloading
>
> > >   protected function __construct()
> > >   {
> > >     parent::__construct();
>
> > >     // On supprime notre classe de la liste, on souhaite qu'elle soit
> > > chargée par les autoloaders classiques basés sur "lib/"
> > >     unset($this->classes['sfRichTextEditorFCK'];
> > >   }
>
> > >   // Les copier-coller tout moisis, merci PHP
>
> > >   static public function getInstance()
> > >   {
> > >     if (!isset(self::$instance))
> > >     {
> > >       self::$instance = new myCoreAutoload();
> > >     }
>
> > >     return self::$instance;
> > >   }
>
> > >   static public function register()
> > >   {
> > >     if (self::$registered)
> > >     {
> > >       return;
> > >     }
>
> > >     ini_set('unserialize_callback_func', 'spl_autoload_call');
> > >     if (false === spl_autoload_register(array(self::getInstance(),
> > > 'autoload')))
> > >     {
> > >       throw new sfException(sprintf('Unable to register %s::autoload
> > > as an autoloading method.', get_class(self::getInstance())));
> > >     }
>
> > >     self::$registered = true;
> > >   }
>
> > >   static public function unregister()
> > >   {
> > >     spl_autoload_unregister(array(self::getInstance(), 'autoload'));
> > >     self::$registered = false;
> > >   }
>
> > > }
>
> > > ?>
>
> > > Puis tu changes les deux premières lignes de ton fichier "config/
> > > ProjectConfiguration.class.php" pour référer à myCoreAutoload au lieu
> > > de sfCoreAutoload, et ça devrait être bon.
>
> > > Mais bon tu vois la lourdeur de la solution 2 par rapport à la
> > > solution 1 ;)
>
> > > On 17 juil, 11:17, eddie <[email protected]> wrote:
>
> > > > Bonjour,
>
> > > > J'utilise symfony 1.2 et doctrine dans un de mes formulaires j'utilise
> > > > FCKeditor de la manière suivante :
> > > > $this->widgetSchema['presentation'] = new sfWidgetFormTextareaFCK(array
> > > > (), array('height'=>'500','width'=>'600'));
>
> > > > Je souhaite ajouter au FCKeditor le CKFinder pour cela j'ai copié le
> > > > fichier "sfRichTextEditorFCK.class.php" se trouvant dans le répertoire
> > > > symfony que j'ai placé dans "monprojet/lib/
> > > > sfRichTextEditorFCK.class.php" j'ai effectué les modifications
> > > > nécessaire pour activer CKFinder mais visiblement c'est toujours le
> > > > helper de symfony qui est chargé.
>
> > > > Comment dois-je procéder pour pouvoir surcharger le helper ?
>
> > > > Merci d'avance de vos réponses
> > > > ++
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr" 
de Google Groupes.
 Pour transmettre des messages à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour résilier votre abonnement à ce groupe, envoyez un e-mail à 
l'adresse [email protected]
 Pour afficher d'autres options, visitez ce groupe à l'adresse 
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à