Bonjour à tous,

Je fais appelle à la communauté car après maintes recherches et essuyé échec sur échec je suis à cours d'imagination.

Mon problème :


Comme le laisse entendre le titre, j'ai intégré ckeditor ds un projet symfony. Pour ce faire j'ai collé le dossier ckeditor dans mon bundle, inséré le fichier "ckeditor.js" et attribué la class "ckeditor" à mon textarea.

comme ceci:

fichier vue.twig

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
{% block scriptJs %}
{{ parent() }}
    {% block scriptJs_cat %}
    <script src="{{ asset('bundles/nom_du_bundle/js/ckeditor/ckeditor.js') }}"></script>
    <script src="{{ asset('bundles/nom_du_bundle/js/edit_newsletter.js') }}" type="text/javascript" ></script>
    {% endblock %}
{% endblock %}

fichier monController

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$formBuilder->add('title', 'text')
                    ->add('content', 'textarea', array('attr' => array('class' => 'ckeditor')))
Jusqu'ici tout va bien : le user modifie le texte, la forme ... je récupère le contenu au submit et tout est nickel.

Sauf que maintenant j'aimerai jouer sur le dom du textarea.

exemple concret : au click sur un checkbox, j'aimerai qu'une div se trouvant donc dans le textarea soit masquée ou affichée suivant son état.

Donc si j'ai bien compris il faut jouer avec l'instance de CKEDITOR et récupérer ma div en faisant par exemple un CKEDITOR.dom.element(document.getElementById(myId);

1ère anomalie : le document.getElementById(myId) ne renvoie rien (null) (myId existe bel et bien )

2ème anomalie : j'ai bien rajouter le fameux CKEDITOR.replace(idEditor) (d'ailleurs ici j'ai pas bien compris s'il fallait mettre l'id ou le name ?)

j'ai essayer en mettent le name ( form[content] ) ou l'id ( form_content ) mais dans les 2 cas j'ai l'erreur suivante :

uncaught exception: The editor instance "form_content" is already attached to the provided element.

Donc à priori il essaye de me faire comprendre qu'une instance du textarea existe déjà (par quel miracle ?) et donc je ne sais que faire.

A tt hasard je met la parti concerné du fichier .js :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
var element = CKEDITOR.dom.element( document.getElementById( 'ma_div' ) );
    console.log(element); // element est undefined
 
/* NOTE : j'ai aussi essayé en créant une nouvelle instance de CKEDITOR mais comme vous vous en douté ça fonctione evidemment pas mieux */
var element = new CKEDITOR.dom.element( document.getElementById( 'ma_div' ) );
Voilà, j'espère que j'ai été assez clair. Est ce que quelqu'un saura m'aider ?