На самом деле я работаю над помощником для CakePHP3, который включает BsHelper, а затем BsFormHelper.
На самом деле все выглядит хорошо, нет проблем с форматами Bootstrap.
Сейчас я пытаюсь создать экземпляр ckEditor, но у меня возникло несколько проблем.
Если я попытаюсь вызвать мой ckEditor так:
$this->BsForm->ckEditor('test')
У меня просто есть некоторые проблемы, потому что функция ckEditor находится в моем BsFormHelper, а функция загрузки находится в BsHelper. Поэтому, когда я пытаюсь получить доступ к приватной переменной var, чтобы узнать, нужно ли мне загружать ckEditor, у меня возникает такая проблема:
Ошибка: вызов функции-члена load () для необъекта
Файл C: \ wamp3 \ www \ wac_lucien \ BsHelpersCakePHP3 \ 3.2 \ plugins \ BsHelpers \ src \ View \ Helper \ BsFormHelper.php
Так что на самом деле я знаю, где проблема:
В BsFormHelper моя функция выглядит так:
public function ckEditor($fieldName, $options = array(), $ckEditorOptions = array()) {
$options['type'] = 'textarea';
$out = $this->input($fieldName, $options);
// If there is a point in the fieldName
if (strpos($fieldName, '.') !== false) {
$nameForReplace = Inflector::camelize(Inflector::slug($fieldName));
} else {
$nameForReplace = $this->_modelForm . Inflector::camelize($fieldName);
}
$this->Bs->load('ckeditor');
$this->Bs->loadJS('CKEDITOR.replace("' . $nameForReplace . '", ' . json_encode($ckEditorOptions) . ');', true);
return $out;
}
И в моем BsHelper я получил:
public function load($key) {
if (!$this->__extensions[$key]['loaded']) {
foreach ($this->__extensions[$key]['css'] as $css) {
$this->loadCSS($css);
}
foreach ($this->__extensions[$key]['js'] as $js) {
$this->loadJS($js);
}
$this->__extensions[$key]['loaded'] = true;
}
return $this->__extensions[$key]['loaded'];
}
Значения в декларации, как это
public $__extensions = array(
'jasny' => array(
'css' => array(
'//cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/css/jasny-bootstrap.min.css'
),
'js' => array(
'//cdnjs.cloudflare.com/ajax/libs/jasny-bootstrap/3.1.3/js/jasny-bootstrap.min.js'
),
'loaded' => true
),
'ckeditor' => array(
'css' => array(),
'js' => array(
'//cdn.ckeditor.com/4.5.8/standard/ckeditor.js'
),
'loaded' => true
)
);
Может ли кто-нибудь помочь мне узнать? Похоже, что функция загрузки, вызываемая в BsFormHelper, не может получить доступ к приватным переменным из BsHelper …
кажется, вы просто пытаетесь использовать помощника в другом помощнике
руководство говорит
Вы можете использовать некоторые функции, уже существующие в другом
помощник. Для этого вы можете указать помощников, которых вы хотите использовать с
Массив $ helpers, отформатированный так же, как в контроллере:
Так в вашем BsFormHelper
просто делать
public $helpers = ['Bs'];
и вы сделали
Других решений пока нет …