2011-07-29 24 views
5

Tôi đã tạo một ArticleController để hiển thị biểu mẫu với các trường: tiêu đề (văn bản) và nội dung (textarea), và mọi thứ hoạt động tốt cho đến khi tôi thêm class = "tinymce" vào trường textarea trong mẫu. sau đó tôi nhận được lỗi này: 'Kiểm soát biểu mẫu không hợp lệ với tên =' biểu mẫu [nội dung] 'không thể tập trung.' Tôi đã làm theo tài liệu để thêm thuộc tính 'lớp' và trình chỉnh sửa hiển thị tốt trong trình duyệt, chỉ khi tôi gửi biểu mẫu tôi nhận được lỗi.Symfony2 TinymceBundle

Bất kỳ ý tưởng nào có thể gây ra điều này?

{{ form_errors(form) }} 

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

{{ form_rest(form) }} 

<input type="submit" /> 

+0

Bạn có thể đăng mã biểu mẫu của mình không? – Problematic

Trả lời

1

Lỗi xảy ra khi WYSIWYG ẩn textarea của bạn nhưng textarea được thiết lập để trường bắt buộc. Bạn có thể đặt 'required' => false trên điều khiển văn bản nội dung của mình khi bạn tạo biểu mẫu để tắt kiểm tra bắt buộc của trình duyệt.

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

Vâng, nhưng tôi cần đây là trường bắt buộc. Tôi chắc chắn có những cách để yêu cầu các lĩnh vực mà không có thuộc tính, nhưng tôi tìm thấy một cách dễ dàng hơn để sửa lỗi này google chrome và vẫn giữ các thuộc tính cần thiết. Dù sao cũng cảm ơn :) – 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 thường sẽ cập nhật các nội dung của textarea ẩn trong onsubmit -Event. Sự kiện này, tuy nhiên, không được kích hoạt khi sử dụng xác thực html5 và mọi thông tin nhập không hợp lệ.

Vì vậy, bạn sẽ không bao giờ nhận được vùng văn bản trống và bắt buộc bằng tinyMCE ở trên cùng để xác thực chính xác trừ khi bạn thực thi văn bản cần cập nhật trước khi bắt đầu xác thực html5.

tôi đã xây dựng một cách giải quyết cho lỗi này mà hy vọng sẽ được sáp nhập vào repo gốc bất cứ lúc nào sớm: https://github.com/stfalcon/TinymceBundle/pull/19

2

Tôi cố gắng gợi ý từ Musefan, và nó chỉ làm việc một phần, nhưng nó đã cho tôi thử nghiệm.

Đây là điều phù hợp với tôi. Được thử nghiệm trên Firefox 10.0.1, IE9 và Chrome 17.

Tôi đặt giá trị tinyMCE.activeEditor.getElement().value = 'test' ở bất kỳ giá trị nào khác ngoài ''. Không chắc tại sao điều đó đúng.

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

Xây dựng dựa trên phản ứng của người hâm mộ ở trên.

Tôi đến đây vì tôi đang sử dụng Biểu mẫu đơn giản, Twitter Bootstrap và tinymce-ray. Nếu bạn đang sử dụng tinymce-ray thiết lập này, bạn cần phải chỉnh sửa dòng ghi chú trong là câu trả lời cho tập tin tinymce.yml của bạn. Tệp cuối cùng của bạn sẽ trông giống như thế này.

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