Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Tout nouveau pour moi

Posted by wam_baloo on 04/29/2008 16:36

Bonjour à tous,

voila je découvre jelix depuis ce matin, et je suis confronté à mon premier problème. Je suis habitué à bosser sur framework, mais j'avoue que celui ci est un peu particulier et il me perd un peu par rapport à ce que j'ai l'habitude de voir.

En fait j'ai plusieurs questions.

  • J'ai testé la génération daocrud, et je trouve dommage de ne pas avoir de vue sur le code en base de données. Je m'explique. Les actions sont gérées automatiquement par le framework (create, delete, update, ...), seulement, je n'ai pas vu où l'on pouvait customiser ces actions. Aucun code n'apparait hormis le petit bout de code suivant :
 class linkCtrl extends jControllerDaoCrud {
    protected $dao = 'link~link';
    protected $form = 'link~link';
    protected $dbProfil = '';
    
    protected $editTemplate = 'link~edit';
    protected $listTemplate = 'link~list';

	 protected function _getResponse(){
        $rep = $this->getResponse('html');
        $rep->bodyTpl = 'link~main';
        return $rep;
    }
 }

Donc est-il possible d'avoir une vue sur le code qui tourne derrière et de pouvoir le customiser ou est-ce que je dois obligatoirement me taper les formulaire à la main et faire mon propre code à la main pour pouvoir en faire ce que je veux ?

  • Deuxième question (un peu en rapport avec la première) : partant du principe que je ne pouvais pas customiser ces actions, je me suis mis à écrire un formulaire et l'action qui va derrière. Je n'arrive pas à afficher mon formulaire. Voici le code PHP :
 class defaultCtrl extends jController {
    /**
    *
    */
    function index() {
        $rep = $this->getResponse('html');
		
        $rep->title = 'Test des formulaires jForms à la main';
        $rep->bodyTpl = 'index';
        
      	$form = jForms::get('test~test');
    	$tpl = new jTpl();
    	$tpl->assign('formulaire', $form);
        
        return $rep;
    }
    
    function sauver(){
    	
    }
 }

Voici mon template, très minimaliste dans un premier temps pour tester :

 <h3>C'est ici que nous allons tester les formulaires à la main de Jelix</h3>

	<h3>Le formulaire</h3>
	<p>Remplissez le formulaire suivant :</p>
 
	{formfull $formulaire, 'test~default:sauver'} 

Et pour finir voici mon formulaire xml (très minimaliste lui aussi) :

 <?xml version="1.0" encoding="utf-8"?>
 <form xmlns="http://jelix.org/ns/forms/1.0">
	<input ref="inputtest">
	</input>
 </form>

Lorsque j'essaye d'afficher mon formulaire il me signale l'erreur suivante :

 Fatal error: Call to a member function getBuilder() on a non-object in E:\wamp\www\jelixtest\temp\biblink\compiled\templates\modules\test\index_html_t.php on line 17

Je suppose que c'est normal puisque j'ai dû oublier quelques trucs. Mais j'ai trouvé la documentation un peu légère et manquant cruellement d'exemples complets donc j'avoue que je me suis un peu perdu et que j'ai dû perdre des informations importantes.

J'espère que je ne pollue pas votre forum.

Merci d'avance !!

  [Opened] Re: Tout nouveau pour moi

Reply #1 Posted by laurentj on 04/29/2008 18:33

Bonjour et bienvenu sur Jelix

je n'ai pas vu où l'on pouvait customiser ces actions

Les controlleurs CRUD héritent de la class jControllerDaoCrud comme tu as pu le remarquer. Regarde la documentation de référence de cette classe, tu y trouveras tout un ensemble de méthodes et propriétés que tu peux redéfinir afin de personnaliser les traitements à faire.

Deuxième question

As tu relu ton code ? :-) tu as instancié un objet jTpl, tu lui assignes le formulaire et puis... plus rien ;-)

Si le template que tu as montré est bien "test~index", voici une action qui fonctionnera :

  function index() {
       $rep = $this->getResponse('html');
  	
       $rep->title = 'Test des formulaires jForms à la main';
       $rep->bodyTpl = 'index';
       
     	$form = jForms::get('test~test');
        if (!$form)
         	$form = jForms::create('test~test');
  
        $rep->assign('formulaire', $form);
       
       return $rep;
   }

Dans ton fichier jforms, n'oublie pas de mettre un <label> dans ton <input>

 
Page
  1. Tout nouveau pour moi