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
Jusqu'ici tout va bien : le user modifie le texte, la forme ... je récupère le contenu au submit et tout est nickel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $formBuilder->add('title', 'text') ->add('content', 'textarea', array('attr' => array('class' => 'ckeditor')))
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 :
Voilà, j'espère que j'ai été assez clair. Est ce que quelqu'un saura m'aider ?
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' ) );
Partager