2011-07-29 17 views
5

Utworzono narzędzie ArticleController do renderowania formularza z polami: title (text) i content (textarea), a wszystko działa dobrze, dopóki nie dodaję class = "tinymce" do pola textarea w szablonie. następnie pojawia się ten błąd: "Nie można ustawić ostrości w nieprawidłowym formularzu z nazwą =" form [treścią] ". Postępowałem zgodnie z dokumentacją, aby dodać atrybut "klasa", a edytor poprawnie renderował się w przeglądarce, a właśnie po przesłaniu formularza otrzymuję komunikat o błędzie.Symfony2 TinymceBundle

Jakieś pomysły, które mogą być przyczyną?

{{ form_errors(form) }} 

{{ form_widget(form.title) }} 
{{ form_widget(form.content, { 'attr': {'class': 'tinymce' }}) }} 

{{ form_rest(form) }} 

<input type="submit" /> 

+0

Czy możesz przesłać swój kod formularza? – Problematic

Odpowiedz

1

Błąd dzieje, gdy WYSIWYG ukrywa textarea ale textarea jest ustawiony na wymaganym zakresie. Możesz ustawić 'required' => false na formancie textarea zawartości podczas budowania formularza, aby wyłączyć wymaganą kontrolę przeglądarki.

$builder->add("content", "textarea", array('required' => false)); 
+0

Tak, ale potrzebuję tego jako wymaganego pola. Jestem pewien, że istnieją sposoby, aby wymagać pola bez atrybutu, ale znalazłem prostszy sposób na naprawienie tego błędu google chrome i nadal zachowuję wymagany atrybut. W każdym razie dzięki :) – l3thal

2
tinyMCE.init({ 
    mode : "specific_textareas", 
    editor_selector : "mceEditor", 
    setup : function(ed) { 
      ed.onChange.add(function(ed, l) { 
        tinyMCE.activeEditor.getElement().value = tinyMCE.activeEditor.getContent(); 
      }); 
    } 
}); 
0

tinyMCE będzie normalnie aktualizować zawartość ukrytej textarea podczas onsubmit -Event. To zdarzenie nie jest jednak wywoływane, gdy używane jest sprawdzanie poprawności html5, a wszelkie dane wejściowe są nieprawidłowe.

Dlatego nigdy nie otrzymasz pustego i wymaganego pola tekstowego z tinyMCE na wierzchu, aby poprawnie sprawdzić poprawność, chyba że wymusisz aktualizację textarea przed rozpoczęciem sprawdzania poprawności html5.

Zbudowałem obejście tego błędu, który miejmy nadzieję, zostaną połączone w oryginalnym repo najbliższym czasie: https://github.com/stfalcon/TinymceBundle/pull/19

2

Próbowałem sugestię od Musefan, i to tylko częściowo obrobione, ale to dało mi do eksperymentowania.

Oto coś, co działa dla mnie. Testowane w przeglądarkach Firefox 10.0.1, IE9 i Chrome 17.

W przypadku ustawienia tinyMCE.activeEditor.getElement().value = 'test' może to być dowolna wartość inna niż ''. Nie wiem, dlaczego to prawda.

tinyMCE.init({ 
    mode : "specific_textareas", 
    editor_selector : "tinymce", 

    setup : function(ed) 
    { 
     // This is needed when the textarea is required for html5 
     ed.onInit.add(function(ed) 
     { 
         tinyMCE.activeEditor.getElement().value = 'test' 
     }); 
    }, 

}); 
0

W oparciu o odpowiedź musefanów.

Przyszedłem tutaj, ponieważ używam Simple Form, Twitter Bootstrap i Tinymce-Rails. Jeśli używasz szyn z szynami cyrkowymi, ta konfiguracja wymaga edycji linii oznaczonej jako odpowiedź na Twój plik tinymce.yml. Twój końcowy plik powinien wyglądać podobnie.

theme_advanced_toolbar_location: top 
theme_advanced_toolbar_align: left 
theme_advanced_statusbar_location: bottom 
theme_advanced_buttons3_add: 
    - tablecontrols 
    - fullscreen 
plugins: 
    - table 
    - fullscreen 
mode: 
    - specific_textareas