Je travaille actuellement sur un assistant pour CakePHP3 qui comprend BsHelper, puis le BsFormHelper.CakePHP 3 - appel de l'objet de l'autre assistant
En fait tout semble bien, pas de problème avec les formats Bootstrap.
Je tente maintenant de créer une instance de ckEditor, mais je rencontre plusieurs problèmes.
Si je tente d'appeler mon ckeditor comme ceci:
$this->BsForm->ckEditor('test')
J'ai juste quelques problèmes parce que la fonction ckeditor est dans mon BsFormHelper, et la fonction de charge est en BsHelper. Alors, quand je tente d'accéder à var privé pour savoir si je devais charger ckeditor j'ai cette question:
Error: Call to a member function load() on a non-object File C:\wamp3\www\wac_lucien\BsHelpersCakePHP3\3.2\plugins\BsHelpers\src\View\Helper\BsFormHelper.php
Donc, en fait, je sais où est le problème:
Dans BsFormHelper ma fonction ressemble:
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;
}
Et dans mon BsHelper je suis:
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'];
}
Les valeurs sont dans la déclaration comme ce
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
)
);
Quelqu'un peut-il m'aider à le découvrir? Il ressemble à la fonction de charge appelé BsFormHelper ne peut pas accéder privates vars de BsHelper ...
Copie possible de [aide d'accès cakephp à partir d'une autre aide] (http://stackoverflow.com/questions/22317894/cakephp-access-helper-from-within-another-helper). Cette question concerne cakephp 2 mais reste valable pour cake3 – arilia