[PHP] Zend Framework met Dojo probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Goedenavond!

Ik zit vast met het implementeren van het ZF met Dojo. Ik wil een registratieformulier maken en hier
gebruik maken van Dojo elementen, zoals bijvoorbeeld de datetimepicker e.d.. Als ik deze declareer
in de indexAction geeft de php geen fout, worden de elementen wel weergegeven; maar niet omgezet
naar javascript o.i.d.. Eerlijk gezegd heb ik geen idee waarom het niet werkt :s ..

Wat ik begreep uit meerdere tutorials/forum posts was dat in de bootstrap Dojo moet worden gekoppeld
aan de view, daarna de form dojo form moet extenden en de .js en de .css aangezet moeten worden in
de header.phtml. Dit heb ik ook allemaal gedaan en dan krijg ik de volgende pagina:

Afbeeldingslocatie: http://siegfried.let.rug.nl/~s1550829/Voorbeeld.jpg

Misschien dat het dan beter overkomt wat ik bedoel met dat de elementen niet worden omgezet.. Hij geeft ze wel weer.

De HTML code van deze div is:
HTML:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
 
 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>            </title> 
<style type="text/css"> 
<!--
    @import "/includes/dojo/dijit/themes/tundra/tundra.css";
--> 
</style> 
<script type="text/javascript"> 
//<!--
    var djConfig = {"usePlainJson":true};
//--> 
</script> 
<script type="text/javascript" src="/includes/dojo/dojo/dojo.js"></script> 
 
</head> 
 
 
<body class="tundra"> 
<div id="container">  
    </div> 
    <div id="oranjeveld"> 
        
    </div> 
    <div id="content"> 
 
                                
        <div id="menu"> 
        </div> 
 
<div id="main"> 
<form method="post" action="/"><dl class="zend_form_dojo"> 
<dt><label for="date1" class="required">Choose a date:</label></dt> 
<dd> 
<input id="date1" name="date1" value="" type="text"></dd> 
<dt><label for="time1" class="optional">Choose a time:</label></dt> 
<dd> 
<input id="time1" name="time1" value="" type="text"></dd> 
<dt><label for="number1" class="optional">Choose a number:</label></dt> 
<dd> 
<input id="number1" name="number1" value="0" type="text"></dd> 
<dt><label for="slide1" class="optional">Let's slide:</label></dt> 
<dd> 
<input id="slide1" name="slide1" value="" type="hidden"><div style="width: 450px;" id="slide1-slider" onChange="dojo.byId('slide1').value = arguments[0];"><ol id="slide1-slider-topDecoration-labels"> 
<li>0%</li> 
<li>50%</li> 
<li>100%</li> 
</ol> 
<div id="slide1-slider-topDecoration"></div> 
</div> 
</dd> 
<dt>&nbsp;</dt><dd> 
<input id="submit" name="submit" value="Submit!" type="submit"></dd></dl></form> </div> 
 
  
 
        <div id="extra"></div> 
    </div> 
    <div id="footer"> 
        <p> 
            &copy; 2009 |
        </p> 
    </div> 
</div> 
</body> 
</html>


** bootstrap.php
[code=php]
<?php
// in here we define the root directory of our site
// is the directory above htdocs
define("SITE_ROOT", dirname($_SERVER['DOCUMENT_ROOT'].PATH_SEPARATOR));

/* Report all errors directly to the screen for simple diagnostics in the dev environment */
error_reporting(E_ALL|E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);

// Set our include path
$include_path = get_include_path().PATH_SEPARATOR;
$include_path .= SITE_ROOT.'/library/'.PATH_SEPARATOR;
$include_path .= SITE_ROOT.'/application/'.PATH_SEPARATOR;
define('CONFIG_PATH', SITE_ROOT . '/application/config.ini');

set_include_path($include_path);

/* Set up autoload so we don't have to explicitely require each Zend Framework class */
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();

$view = new Zend_View();
$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
//$view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');


Zend_Dojo::enableView($view);
$view->dojo()->setDjConfigOption('usePlainJson', true)
->addStylesheetModule('dijit.themes.tundra')
->setLocalPath('/includes/dojo/dojo/dojo.js');

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();


Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

$viewRenderer->setView($view);

Zend_Loader::loadClass('Zend_Controller_Front');
$front = Zend_Controller_Front::getInstance();
$front->throwExceptions(true);
$front->setControllerDirectory(SITE_ROOT.'/application/controllers/');
$front->dispatch();
[/code=php]

** StudentController.php
[code=php]
class StudentController extends Zend_Controller_Action
{

public function init()
{
// Let the ViewHelper see our 'views' directory
// $this->view->setScriptPath(VIEWS_DIR);
}


public function indexAction()
{
$form1 = new Zend_Dojo_Form();
$form1->setMethod('post')->setAction("/");
$form1->addElement('DateTextBox', 'date1', array(
'label' => 'Choose a date:',
'datePattern' => 'yyyy-MM-dd',
'validators' => array('Date'),
'required' => true
))
->addElement('TimeTextBox', 'time1', array(
'label' => 'Choose a time:',
'timePattern' => 'HH:mm:ss',
))
->addElement('NumberSpinner', 'number1', array(
'label' => 'Choose a number:',
'value' => 0,
'smallDelta' => 1,
'min' => 0,
'max' => 30,
'defaultTimeout' => 100,
'timeoutChangeRate' => 100,
))
->addElement('HorizontalSlider', 'slide1', array(
'label' => 'Let\'s slide:',
'minimum' => 0,
'maximum' => 25,
'discreteValues' => 10,
'style' => 'width: 450px;',
'topDecorationDijit' => 'HorizontalRuleLabels',
'topDecorationLabels' => array('0%', '50%', '100%'),
'topDecorationParams' => array('style' => 'padding-bottom: 20px;'),
))
->addElement('SubmitButton', 'submit', array(
'label' => 'Submit!'
));

$this->view->form1 = $form1;
}
}
[/code=php]


** index.phtml
[code=php]
<?php echo $this->render('header.phtml'); ?>
<?php echo $this->render('student/navigatie_student.phtml'); ?>


<div id="main">
<?php
$this->dojo()->enable();
echo $this->form1;
?>
</div>

<?php /* echo $this->render('nieuws.phtml'); */ ?>
<?php echo $this->render('footer.phtml'); ?>
[/code=php]

**header.phtml
[code=php]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>



<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> Test </title>
<?php


$this->dojo()->setLocalPath('/includes/dojo/dojo/dojo.js')
->addStyleSheetModule('dijit.themes.tundra');
echo $this->dojo();

?>
...........................Afgekort
<body class="tundra">

[/code=php]


Sorry voor misschien de overload aan code..
Ik hoop dat iemand weet waar het probleem ligt, zit met mijn handen in mijn haar!

Alvast _/-\o_

Sowieso sneu


Acties:
  • 0 Henk 'm!

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 12-09 11:42

EnnaN

Toys in the attic

Heel toevallig zag ik vanmiddag een Zend framework thingy, en daarmee had ik (kennelijk als enige?) het volgende probleem: alle css en alle JS werd niet geladen. Dat bleek te komen omdat voor alle paden een '/' stond, dus de relatieve paden niet relatief waren....

Als ik hier zo kijk, heb jij dit bv staan:
code:
1
src="/includes/dojo/dojo/dojo.js"


in de html, en ik zie ook veel "/includes" staan in de rest... Geen oplossing, direct, maar als je niet in de root van je webserver bezig bent, dan denk ik niet dat die dojo.js geladen gaat worden zo?

sig


Acties:
  • 0 Henk 'm!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Uhuh noted.

Via firefox heb ik geinspecteerd of de js files wel worden aangeroepen en dit gebeurd. Eerst wordt dojo.js gerequest en daarna de files die dojo.js aanroept. In het script gedeelte kan ik hem dan ook zien. Tevens met de CSS files voor het thema tundra, die worden ook allemaal geladen..

Sowieso sneu


Acties:
  • 0 Henk 'm!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Chrome element inspector geeft ook aan dat er meerdere .jssen worden geladen. Volgens mij is dat niet het probleem!

Sowieso sneu


Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
Misschien een <base> tag plaatsen in je code, want ik denk ook toch dat het aan het JS bestand ligt.
En moest je Firebug (Add-on) voor Firefox, zeer handig voor JS errors te vinden enz...

Heb de tutorial al een paar keer online gevonden, mss eens een andere zoeken en die proberen.

[ Voor 48% gewijzigd door imp4ct op 19-04-2009 01:05 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


Acties:
  • 0 Henk 'm!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Dus dat de js niet wordt geladen? Mijn enavorige post was via firebug.
Die geeft bij "scripts" wel de dojo.js plus aangeroepen scripts door dojo.js aan
Base tag wil ik het liefst voorkomen, includes zit ook al in dezelfde dir
als index.php. Waarom denken jullie dat de dojo.js niet word aangeroepen??

Sowieso al thanks!!!!!!

Sowieso sneu


Acties:
  • 0 Henk 'm!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Dit was de oplossing 8)7 8)7

JavaScript:
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
<script type="text/javascript">
//<!--
dojo.require("dijit.form.DateTextBox");
    dojo.require("dijit.form.TimeTextBox");
    dojo.require("dijit.form.NumberSpinner");
    dojo.require("dijit.form.Slider");
    dojo.require("dijit.form.Button");
    dojo.require("dijit.form.Form");
    dojo.require("dijit.layout.ContentPane");
    dojo.require("dijit.layout.SplitContainer");
    dojo.require("dijit.layout.TabContainer");
    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();
});
var zendDijits = [{"id":"date1","params":{"constraints":"{\"datePattern\":\"yyyy-MM-dd\"}","required":"true","dojoType":"dijit.form.DateTextBox"}},{"id":"time1","params":{"constraints":"{\"timePattern\":\"HH:mm:ss\"}","dojoType":"dijit.form.TimeTextBox"}},{"id":"number1","params":{"smallDelta":1,"constraints":"{\"min\":0,\"max\":30}","defaultTimeout":100,"timeoutChangeRate":100,"dojoType":"dijit.form.NumberSpinner"}},{"id":"slide1-slider-topDecoration-labels","params":{"style":"padding-bottom: 20px;","container":"topDecoration","dojoType":"dijit.form.HorizontalRuleLabels"}},{"id":"slide1-slider-topDecoration","params":{"style":"padding-bottom: 20px;","container":"topDecoration","dojoType":"dijit.form.HorizontalRuleLabels"}},{"id":"slide1-slider","params":{"minimum":0,"maximum":25,"discreteValues":10,"value":null,"dojoType":"dijit.form.HorizontalSlider"}},{"id":"submit","params":{"label":"Submit!","dojoType":"dijit.form.Button"}},{"id":null,"params":{"dojoType":"dijit.form.Form"}},{"id":"pane1","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"pane2","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"pane3","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"splitpane1","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"splitpane2","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"split1","params":{"dojoType":"dijit.layout.SplitContainer"}},{"id":"pane4","params":{"dojoType":"dijit.layout.ContentPane"}},{"id":"tab1","params":{"dojoType":"dijit.layout.TabContainer"}}];
//-->

</script>

Sowieso sneu

Pagina: 1