Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2011, 19h31   #1
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Par défaut JQuery et ZendFramework

Bonjour,
J'aimerai utiliser cette magnifique bibliothèque qu'est JQuery, je me casse la tête depuis toute l'aprèm et je n'arrive à rien, alors je me tourne vers vous.

Je souhaite faire marcher une date à l'aide de datePicker. Mais ça ne marche pas. J'aimerai avoir vos lumières.

J'ai donc l'arborescence suivante :
Citation:
/application
/img
/library
--> Zend
--> ZendX
/public
-->js -->jquery

Voici le formulaire que je souhaite afficher :

/application/modules/defaut/forms/Profil.php
Code :
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
<?php
 
class Default_Form_Profil extends ZendX_JQuery_Form
{
 
    public function init()
    {
		$this->setName('rubrique');
 
		 $dateNaiss = new ZendX_JQuery_Form_Element_DatePicker(
                    'dateNaiss',
                    array('label' => 'Date de naissance (jj/mm/aaaa)')
                );
                $dateNaiss->setJQueryParam('dateFormat', 'dd/mm/yyyy');
 
		$signature = new Zend_Form_Element_Textarea('signature');
		$signature->setLabel('Signature')
			  ->addFilter('StripTags')
			  ->addFilter('StringTrim');
 
		$mail = new Zend_Form_Element_Text('mail');
		$mail->setLabel('E-mail')
			  ->addFilter('StripTags')
			  ->addFilter('StringTrim')
			  ->addValidator('EmailAddress');
 
		$envoyer = new Zend_Form_Element_Submit('valider');
		//$envoyer->setAttrib('id', 'boutonenvoyer');
 
		$this->addElements(array($login, $avatar, $pseudo, $sexe, $dateNaiss, $signature, $mail, $envoyer));
    }
 
 
}

Mon contrôleur : /application/modules/defaut/controllers/ProfilController.php
Code :
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
 
class ProfilController extends Zend_Controller_Action
{
 
	public function init()
	{
		parent::init();
		$models = $this->_request->getParam('module').'/models';
		set_include_path('../application/modules/'.$models . PATH_SEPARATOR . get_include_path());
 
		$this->view->module = $this->getRequest()->getModuleName();
		// recupere le module
		$this->view->controller = $this->getRequest()->getControllerName(); 
		// recupere le controller
		$this->view->action = $this->getRequest()->getActionName(); 
		// recupere l'action
 
		// Gère la session
		$this->view->auth = new Zend_Session_Namespace('user');
 
		// si pas connecté, on redirige
		if(!isset($this->view->auth->login)) {
			$this->_redirect('/');
		}
	}
 
	public function indexAction()
	{
 
 
		$this->view->title = "profil";
		$this->view->headTitle($this->view->title, 'PREPEND');
 
		$form = new Default_Form_Profil();
		$this->view->form = $form;
		$this->view->jQuery()->enable()->uiEnable();
		$user = new Default_Models_DbTable_Users();
		$user = $user->searchUser($this->view->auth->login);
 
		$this->view->avatar = '';
		if(!empty($user["avatar"]))
			$this->view->avatar = './data/img/avatars/'.$user["avatar"];
 
 
		if ($this->getRequest()->isPost()) {
		    $formData = $this->getRequest()->getPost();
		    if ($form->isValid($formData)) {
		        $login = $form->getValue('login');
		        $pseudo = $form->getValue('pseudo');
		        $dateNaiss = $form->getValue('dateNaiss');
		        $signature = $form->getValue('signature');
		        $sexe = $form->getValue('sexe');
		        $mail = $form->getValue('mail');
		        $avatar = $form->getValue('avatar');
 
		        $values = array(
		        	'pseudo'=>$pseudo,
		        	'dateNaiss'=>$dateNaiss,
		        	'signature'=>$signature,
		        	'avatar'=>$avatar,
		        	'sexe'=>$sexe,
		        	'mail'=>$mail
		        );
 
		        if (!$form->avatar->receive()) {
	                echo "Erreur d'upload";
	            }
 
		        try {
					$user = new Default_Models_DbTable_Users();
				    $user->updateUser($login, $values);
		        }catch (Exception $e) {
					echo $e->getMessage();
				}
 
		        $this->_redirect('/profil');
		    } 
		    else {
		        $form->populate($formData);
		    }
 
		} else {
			try {
				$user = new Default_Models_DbTable_Users();
				$form->populate( $user->searchUser($this->view->auth->login) );
			} catch (Exception $e) {
				echo $e->getMessage();
				$this->view->form = null;
			}
		}
	}
 
}
ma vue /application/modules/defaut/views/scripts/Profil/index.phtml


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<article>
	<h2>Profil - <?php echo $this->auth->login; ?></h2>
<?php $this->jQuery()->enable(); ?>
    <?php echo $this->datePicker('dateNaiss', '30-07-2010', array('dateFormat' => 'dd-mm-yy', 'changeMonth' => true, 'changeYear' => true), array()) ?>
 
	<?php
		if(!empty($this->avatar)) {
	?>
		<img src="<?php echo $this->avatar;?>" alt="avatar de <?php echo $this->auth->login; ?>" class="avatar" />
	<?php
		}
	?>
 
	<?php
 
		echo $this->form;
	?>
</article>
Mon Bootstrap : /application/Bootstrap.php
Code :
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
<?php
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	protected function _initAutoLoader() {
		$autoloader = Zend_Loader_Autoloader::getInstance();
 
		//on configure le module par défaut avec son namespace, son chemin et les ressources associées
		$moduleLoader = new Zend_Application_Module_Autoloader(array(
			'namespace' => 'Default_',
			'basePath' => APPLICATION_PATH . '/modules/default'));
		$moduleLoader->addResourceType('Models', 'models', 'Models');
		$moduleLoader->addResourceType('Forms', 'forms', 'Forms');
		Zend_Session::start();
 
		return $moduleLoader;
	}
 
	/**
	 * Fonction servant Ã* initialiser la vue
	 */
	protected function _initView()
    {
        // Initialize view
        $view = new Zend_View();
        $view->doctype('HTML5');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle(' Site du Tutorat');
 
    return $view;
    }
 
	/**
	* Initialize Translation
	*
	* @return Zend_Translate
	*/
	public function _initTranslate()
	{
	    $translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/fr.php', 'fr');
	    Zend_Registry::set('Zend_Translate', $translate);
	    return $translate;
	}
 
       //ne marche pas !
	/*protected function _initJQuery()
    {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper');
    }*/
 
}
et enfin, le layout :
Code :
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
<?php echo $this->doctype(); ?>
<html lang="fr">
	<head>
		<?php echo $this->headTitle(); ?>
		<?php echo $this->headMeta(); ?>
		<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/themes/default/base.css'); ?>
		<?php echo $this->headScript()->appendFile($this->baseUrl().'/javascript/javascript.js', 'text/javascript'); ?>
	</head>
	<body>
		<section id="page">
 
			<?php echo $this->partial('header.phtml', array('menu'=>$this->menu($this->baseUrl()))); ?>
 
			<section id="content">
				<?php 
					echo $this->partial('filAriane.phtml', array('filAriane'=>$this->filAriane($this->baseUrl(),
																							   $this->module,
																							   $this->controller,
																							   $this->action,
																							   $this->page)));
					echo $this->partial('sideMenu.phtml', array('module'=>$this->module));
				?>
				<section>
					<?php
						//cette fonction permet de récupérer la vue de l'action appelée
						echo $this->layout()->content; 
					?>
				</section>
			</section>
 
			<?php echo $this->partial('footer.phtml'); ?>
 
		</section>
	</body>
</html>

Merci s'il est possible d'avoir une aide.

Concrètement, il ne se passe rien. Dans le meilleur des cas, le formulaire apparaît, mais lorsque je clique sur le champs, rien n’apparaît.
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2011, 09h04   #2
Invité de passage
 
Inscription : novembre 2010
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 35
Points : 2
Points : 2
Problème résolu :

Dans le bootstrap
Code :
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
<?php
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	protected function _initAutoLoader() {
		$autoloader = Zend_Loader_Autoloader::getInstance();
 
		//on configure le module par défaut avec son namespace, son chemin et les ressources associées
		$moduleLoader = new Zend_Application_Module_Autoloader(array(
			'namespace' => 'Default_',
			'basePath' => APPLICATION_PATH . '/modules/default'));
		$moduleLoader->addResourceType('Models', 'models', 'Models');
		$moduleLoader->addResourceType('Forms', 'forms', 'Forms');
		Zend_Session::start();
 
		return $moduleLoader;
	}
 
	/**
	 * Fonction servant Ã* initialiser la vue
	 */
	protected function _initView()
    {
        // Initialize view
        $view = new Zend_View();
        $view->doctype('HTML5');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle(' Site du Tutorat');
 
    return $view;
    }
 
	/**
	* Initialize Translation
	*
	* @return Zend_Translate
	*/
	public function _initTranslate()
	{
	    $translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/fr.php', 'fr');
	    Zend_Registry::set('Zend_Translate', $translate);
	    return $translate;
	}
 
	protected function _initJQuery()
    {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->addHelperPath('ZendX/JQuery/View/Helper/', 'ZendX_JQuery_View_Helper');
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
		$viewRenderer->setView($view);
    }
 
 
}

Et le layout :

Code :
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
<?php echo $this->doctype(); ?>
<html lang="fr">
	<head>
		<?php echo $this->headTitle(); ?>
		<?php echo $this->headMeta(); ?>
		<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/themes/default/base.css'); ?>
		<?php echo $this->headScript()->appendFile($this->baseUrl().'/javascript/javascript.js', 'text/javascript'); ?>
		<?php	$this->JQuery()->addStyleSheet($this->baseUrl() . '/js/jquery/development-bundle/themes/ui-lightness/jquery-ui-1.8.7.custom.css');
			    $this->JQuery()->setUiLocalPath($this->baseUrl() .'/js/jquery/development-bundle/ui/jquery-ui-1.8.7.custom.js');    
			    echo $this->jQuery();
   			 ?>
	</head>
	<body>
		<section id="page">
 
			<?php echo $this->partial('header.phtml', array('menu'=>$this->menu($this->baseUrl()))); ?>
 
			<section id="content">
				<?php 
					echo $this->partial('filAriane.phtml', array('filAriane'=>$this->filAriane($this->baseUrl(),
																							   $this->module,
																							   $this->controller,
																							   $this->action,
																							   $this->page)));
					echo $this->partial('sideMenu.phtml', array('module'=>$this->module));
				?>
				<section>
					<?php
						//cette fonction permet de récupérer la vue de l'action appelée
						echo $this->layout()->content; 
					?>
				</section>
			</section>
 
			<?php echo $this->partial('footer.phtml'); ?>
 
		</section>
	</body>
</html>
Kai231 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h09.


 
 
 
 
Partenaires

Hébergement Web