2013-10-25 4 views
0

Я использую https://github.com/CakeDC/TinyMCE для загрузки плагина и выполнил весь шаг, чтобы интегрировать мой проект cakePHP. так что сейчас, все текстовое поле был успешно изменен редактор TinyMCETinyMCE: cake php plugin [не может отправить форму]

Но когда нажмите «ВВЕСТИ» представить мою форму, страница не может представить и разместить данные. Без загрузки редактора моя форма может отправлять и отправлять данные.

Есть ли какие-либо проблемы с jquery? пожалуйста, посоветуй мне.

спасибо.

Bootsrab.php

CakePlugin::load('TinyMCE'); 
Configure::write('TinyMCE.editorOptions', array('width' => '500px','height'=>'250px')); 

Контроллер:

public $helpers=array('Html','Form','TinyMCE.TinyMCE'); 

Вид:

$this->TinyMCE->editor(array('theme' => 'advanced', 'mode' => 'textareas')); 
echo $this->Form->input('user_requirements',array('required'=>true)); 

Компоновка: по умолчанию Loding файл расслоение плотной:

echo $this->Html->script(array('ddsmoothmenu','jquery-1.7.1.min','jquery-ui-1.8.17.custom.min')); 
+0

пожалуйста, обновите ваш вопрос с вашим php, поэтому мы можем знать, что не так – elune

+0

@elune Привет, Спасибо за ваш ответ. Я обновил свое php-кодирование. – Suba

ответ

1

Вы установили поле required, поэтому проблема, с которой вы столкнулись, вероятно, является проверкой формы на основе браузера.

Проблема заключается в том, что валидация применяется до TinyMCE вводит содержимое в текстовое поле, поэтому проверка всегда будет терпеть неудачу, поскольку текстовое поле пуст. Это очень давно известно «ошибка» Кстати:

http://www.tinymce.com/develop/bugtracker_view.php?id=4768 http://www.tinymce.com/develop/bugtracker_view.php?id=5671

В Firefox вы можете заметить пузырь проверки, которая появляется «за» браузер в левом нижнем углу экрана, и в Chrome для Например, он выдал бы следующую ошибку: «Недопустимое управление формой с именем = '...' не является фокусным".

Быстрое и грязное исправление должно было бы установить required на false. Для того, чтобы сохранить required класс по сгенерированной контейнера div вы должны установить это вручную, используя div вариант:

'div' => array('class' => 'input text required') 

Также можно отключить проверку браузера полностью определяя атрибут формы novalidate:

$this->Form->create('ModelName', array('novalidate' => true)); 

или с помощью атрибута на кнопку отправки formnovalidate:

$this->Form->submit('Submit', array('formnovalidate' => true)); 

Теоретически можно было бы также прослушивать событие invalid и отображать пользовательские флажки для проверки, но проблема здесь в том, что поведение браузера несовместимо, то есть в Chrome невозможно проверить невидимые (используя) поля.Также содержимое будет по-прежнему отсутствовать в поле textarea.

Что-то вроде работает с помощью opacity, чтобы скрыть поле, таким образом, можно было бы разместить текстовое поле под редактором, и пузырь проверки корректно отобразится. Однако это также потребует ввода содержимого редактора в текстовое поле вручную при нажатии Введите и при нажатии кнопки отправки (или, возможно, даже проще использовать соответствующие события смены редактора). Я посмотрю, смогу ли я придумать пример для этого позже.

Update: Я реализовал починки/обходной путь в виде TinyMCE 4.x плагин, так как это не давало мне покоя в некоторых из моих собственных приложений тоже см https://github.com/ndm2/tinymce-validatable

Смежные вопросы