Intereting Posts
Вопрос о локализации PHP Как избежать устаревшей ошибки времени вызова в PHP? jQuery для PHP – сериализованные строки вырываться из if и foreach Что-то не так с моим кодом cURL (http status of 0)? Silex: jQuery запрос AJAX вызывает исключение – для «GET …» не найден маршрут лучший способ защитить простой wysiwyg с помощью php Загрузите несколько файлов в CodeIgniter PHP – манипуляция с строками удаляет симпатичные символы и заменяет пробелы CakePHP Неопределенная радиокнопка изменена на нежелательное значение для отправки Возможно ли создать файл * .sh с помощью PHP CLI и получить доступ к экспортированным Env vars в PHP-скрипте? PHP – код для перемещения по каталогу и получения всех файлов (изображений) Как сохранить gettext множественную форму в переменной, используя php Охват кода при отсутствии проверки защищенных / приватных методов с помощью PHPUnit Показать изображение на основе даты в PHP

CakePHP – ошибка помощника TinyMceHelper: метод TinyMceHelper :: __ name не существует

Поэтому я хочу реализовать помощник TinyMce. Я следил за инструкциями из пекарни cakephp, но я все еще получаю сообщение об ошибке.

Это массив помощников в моем контроллере проекта:

var $helpers = array('Form', 'Time', 'Crumb', 'Text', 'Tinymce'); 

Это помощник tinymce, который я скачал:

 <?php class TinyMceHelper extends AppHelper { // Take advantage of other helpers var $helpers = array('Javascript', 'Form'); // Check if the tiny_mce.js file has been added or not var $_script = false; /** * Adds the tiny_mce.js file and constructs the options * * @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated * @param array $tinyoptions Array of TinyMCE attributes for this textarea * @return string JavaScript code to initialise the TinyMCE area */ function _build($fieldName, $tinyoptions = array()) { if (!$this->_script) { // We don't want to add this every time, it's only needed once $this->_script = true; $this->Javascript->link('/js/tiny_mce/tiny_mce.js', false); } // Ties the options to the field $tinyoptions['mode'] = 'exact'; $tinyoptions['elements'] = $this->__name($fieldName); return $this->Javascript->codeBlock('tinyMCE.init(' . $this->Javascript->object($tinyoptions) . ');'); } /** * Creates a TinyMCE textarea. * * @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated * @param array $options Array of HTML attributes. * @param array $tinyoptions Array of TinyMCE attributes for this textarea * @return string An HTML textarea element with TinyMCE */ function textarea($fieldName, $options = array(), $tinyoptions = array()) { return $this->Form->textarea($fieldName, $options) . $this->_build($fieldName, $tinyoptions); } /** * Creates a TinyMCE textarea. * * @param string $fieldName Name of a field, like this "Modelname.fieldname", "Modelname/fieldname" is deprecated * @param array $options Array of HTML attributes. * @param array $tinyoptions Array of TinyMCE attributes for this textarea * @return string An HTML textarea element with TinyMCE */ function input($fieldName, $options = array(), $tinyoptions = array()) { $options['type'] = 'textarea'; return $this->Form->input($fieldName, $options) . $this->_build($fieldName, $tinyoptions); } } ?> 

И это мое добавление, что я хочу использовать помощника:

 <?php echo $form->create('Project'); echo $form->input('title', array('label' => 'Title')); echo $form->input('website', array('label' => 'Website')); echo $tinymce->input('description'); echo $form->input('language_id', array('label' => 'Language')); echo $form->input('tags', array('type' => 'text')); echo $form->end('Post project'); ?> 

Все выглядит хорошо, но я получаю эту ошибку:

 Warning (512): Method TinyMceHelper::__name does not exist [CORE/cake/libs/view/helper.php, line 154] 

Подумайте, что я здесь пропустил этот шаг?

Related of "CakePHP – ошибка помощника TinyMceHelper: метод TinyMceHelper :: __ name не существует"

Вы должны использовать CakePHP 1.3. Помощник формы в 1.2 использовал __name . В 1.3 это было почему-то изменено на _name .

Если вы обновите помощника:

 $tinyoptions['elements'] = $this->__name($fieldName); 

в

 $tinyoptions['elements'] = $this->_name($fieldName); 

Тебе должно быть хорошо.

Я думаю, вы ошибочно указали имя помощника в контроллере. Должен быть :

 var $helpers = array('Form', 'Time', 'Crumb', 'Text', 'TinyMce'); 

и, на ваш взгляд,

 echo $tinyMce->input('description'); 

Надеюсь, что это поможет.

Вы должны сделать так, как предложили cdburgess , и если это не сработает, убедитесь, что ваши javascripts загружены и отредактируйте tinmce.php код помощника TinyMce для правильной загрузки javascripts, строка выглядит так:

  $this->Javascript->link('/webroot/js/tiny_mce.js', false);