Zend Framework dojo Editor toolbar niet weergegeven
Ik ben begonnen in mijn Bootstrap bestand in /application/Bootstrap.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
$view->doctype('XHTML1_STRICT');
}
}
{
function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
$view->doctype('XHTML1_STRICT');
}
}
Ik voeg het view helper path toe, dat doe ik in de functie initDoctype(), misschien niet zo'n handige plaats maar hij wordt gewoon aangeroepen in mijn layout script.
En dan nu het stukje code wat ik in mijn layout script heb gezet in application/layouts/scripts/layout.phtml in de head.
Code (php)
Ik gebruik dus een lokale dojo installatie. Het bestand staat in /public/js/dojo/dojo.js
Ik maak gebruik van een zend form waar ik het editor component aan toe voeg. Dat formulier staat in /application/forms/EditPage.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class Application_Form_EditPage extends Zend_Dojo_Form
{
public function init()
{
// Enable dojo for this form
Zend_Dojo::enableForm($this);
// Dojo-enable all sub forms:
foreach ($this->getSubForms() as $subForm) {
Zend_Dojo::enableForm($subForm);
}
$this->addElement('editor', 'content', array(
'plugins' => array('undo', 'bold', 'italic'),
'editActionInterval' => 2,
'focusOnLoad' => true,
'height' => '250px',
'inheritWidth' => false,
'value' => 'test',
));
}
}
?>
class Application_Form_EditPage extends Zend_Dojo_Form
{
public function init()
{
// Enable dojo for this form
Zend_Dojo::enableForm($this);
// Dojo-enable all sub forms:
foreach ($this->getSubForms() as $subForm) {
Zend_Dojo::enableForm($subForm);
}
$this->addElement('editor', 'content', array(
'plugins' => array('undo', 'bold', 'italic'),
'editActionInterval' => 2,
'focusOnLoad' => true,
'height' => '250px',
'inheritWidth' => false,
'value' => 'test',
));
}
}
?>
Ik heb hier voor het gemak alleen test erin gezet, om te kijken of dat het werkte. De tekst wordt wel getoond, maar is niet aan te passen, en ook de toolbar met de items undo, bold en italic wordt niet getoond.
Mijn view script staat in /application/views/scripts/index/edit.phtml
Als ik trouwens in de broncode kijk die mijn browser teruggeeft staat er dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<div id="main">
<div style="margin-left:10px">
<h2>Edit Page</h2>
<form action="/stamboom_nieuw/public/index/edit"><dl class="zend_form_dojo">
<dt id="content-label"> </dt>
<dd>
<input id="content" name="content" value="test" type="hidden" /><div id="content-Editor">test</div>
<noscript><textarea name="content" id="content-Editor" rows="24" cols="80">test</textarea></noscript></dd></dl></form> </div>
</div>
</div>
<div style="margin-left:10px">
<h2>Edit Page</h2>
<form action="/stamboom_nieuw/public/index/edit"><dl class="zend_form_dojo">
<dt id="content-label"> </dt>
<dd>
<input id="content" name="content" value="test" type="hidden" /><div id="content-Editor">test</div>
<noscript><textarea name="content" id="content-Editor" rows="24" cols="80">test</textarea></noscript></dd></dl></form> </div>
</div>
</div>
Boven aan in de broncode van de browser staat er ook dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<script type="text/javascript" src="/stamboom_nieuw/public/js/dojo/dojo.js"></script>
<script type="text/javascript">
//<![CDATA[
dojo.require("dijit.Editor");
dojo.require("dijit.form.Form");
dojo.require("dojo.parser");
dojo.addOnLoad(function() {
dojo.forEach(zendDijits, function(info) {
var n = dojo.byId(info.id);
if (null != n) {
dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
}
});
dojo.parser.parse();
});
dojo.addOnLoad(function() {
var form = zend.findParentForm(dojo.byId('content'));
dojo.connect(form, 'submit', function(e) {
dojo.byId('content').value = dijit.byId('content-Editor').getValue(false);
});
});
if (zend == undefined) {
var zend = {};
}
zend.findParentForm = function(elementNode) {
while (elementNode.nodeName.toLowerCase() != 'form') {
elementNode = elementNode.parentNode;
}
return elementNode;
};
var zendDijits = [{"id":"content-Editor","params":{"plugins":"[\"undo\",\"bold\",\"italic\"]","editActionInterval":2,"focusOnLoad":"true","height":"250px","inheritWidth":"false","required":"false","dojoType":"dijit.Editor"}},{"id":null,"params":{"dojoType":"dijit.form.Form"}}];
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
dojo.require("dijit.Editor");
dojo.require("dijit.form.Form");
dojo.require("dojo.parser");
dojo.addOnLoad(function() {
dojo.forEach(zendDijits, function(info) {
var n = dojo.byId(info.id);
if (null != n) {
dojo.attr(n, dojo.mixin({ id: info.id }, info.params));
}
});
dojo.parser.parse();
});
dojo.addOnLoad(function() {
var form = zend.findParentForm(dojo.byId('content'));
dojo.connect(form, 'submit', function(e) {
dojo.byId('content').value = dijit.byId('content-Editor').getValue(false);
});
});
if (zend == undefined) {
var zend = {};
}
zend.findParentForm = function(elementNode) {
while (elementNode.nodeName.toLowerCase() != 'form') {
elementNode = elementNode.parentNode;
}
return elementNode;
};
var zendDijits = [{"id":"content-Editor","params":{"plugins":"[\"undo\",\"bold\",\"italic\"]","editActionInterval":2,"focusOnLoad":"true","height":"250px","inheritWidth":"false","required":"false","dojoType":"dijit.Editor"}},{"id":null,"params":{"dojoType":"dijit.form.Form"}}];
//]]>
</script>
Dus volgens mij wordt het javascript bestand wel goed geladen.
Ik snap niet goed waarom het niet werkt, blijkbaar wordt dojo niet ingeschakeld in het formulier of misschien ergens anders niet. Is er iemand die snapt wat er mis is en waar ik het moet zoeken?
Alvast Bedankt!
Gr Dennis
Gewijzigd op 30/01/2011 17:20:38 door Dennis k
Er zijn nog geen reacties op dit bericht.