IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

formulaire admin en ligne [Doctrine]


Sujet :

ORM PHP

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut formulaire admin en ligne
    Bonjour,
    voila, je cherche a mettre un formulaire genere par l'admin generator en ligne au lieu d'un tableau.
    j'ai bien recuperer les partials _form_field & _form_fieldset mais je voie pas ce qu'il faut modifier.

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    L'admin générator ce contente de récupérer le form, en général.

    Je ne vois pas l'intérêt de perdre du temps à récupérer cela, tu aurais aussi vite fais de le développer directement toi même.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    donc je peut créer de toute pièce un _form.php ?
    Pourquoi pas effectivement sauf que je perd la possibilité de gérer celui ci via l'admin generator.
    Je trouvai plus simple de juste modifier le templates d'affichage des champs tout en conservant les fonctionnalités du fichier generator.

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    me demande si j'ai été assez explicite.

    En faites un formulaire généré automatiquement est de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form action....>
    <table>
      <tr>
        <td>label1</td><td>champ1</td>
      </tr>
      <tr>
        <td>label2</td><td>champ2</td>
       </tr>
       .....
    </table>
    </form>
    bien sur ce n'est pas un table mais des div, mais c'est plus compréhensible pour la mise en page.

    Ce que je voudrait c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form>
      <tr>
        <td>champ1</td><td>champ2</td>....
      </tr>
    </form>
    c'est pour pour pouvoir l'inclure via un embedForm à un autre formulaire.

    j'ai bien tenté de faire:
    _form.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php use_stylesheets_for_form($form) ?>
    <?php use_javascripts_for_form($form) ?>
     
    <div class="sf_admin_form">
      <?php echo form_tag_for($form, '@asset') ?>
        <?php echo $form->renderHiddenFields(false) ?>
     
        <?php if ($form->hasGlobalErrors()): ?>
          <?php echo $form->renderGlobalErrors() ?>
        <?php endif; ?>
     
        <?php foreach ($configuration->getFormFields($form, $form->isNew() ? 'new' : 'edit') as $fieldset => $fields): ?>
         <?php $fields->render() ?>
        <?php endforeach; ?>
     
        <?php include_partial('asset/form_actions', array('asset' => $asset, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
      </form>
    </div>
    mais j'ai l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined method sfOutputEscaperArrayDecorator::render()
    n'y a t il pas moyen au niveau des 2 partials de modifier juste un div pour obtenir ce que je désire ?

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je ne pense pas que cela puisse être simplement géré dans le générateur d'admin, sans apporter de profonde modification au code généré, le rendant ainsi fixe et indépendant du générateur.

    Il reste, peut-être, une possibilité. Le code généré par le générateur provient de deux sources, un template de ce qui doit être généré, mais qui n'inclu pas la présentation du form, donc non intéressant pour toi. Et, pour le form, un objet qui gère la présentation en sortie de form. Je n'ai jamais exploré la chose, ni tenté de le modifier. Ce qui ne veux pas dire que ce n'est pas réalisable... Même si j'ai du mal à voir comment lui dire quel champ doit se trouver sur quel ligne.

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    en faite je part de ce shéma:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    groupasset:
      actAs: [Timestampable]
      columns:
        name: string(255)
        site_id: integer
        user_id: integer
        status: string(2)
        person: string(2)
        lastview: date
      indexes:
        Unique1:
          fields: [name, site_id]
          type: unique
      relations:
        owner:
          class: sfGuardUser
          local: user_id
          foreign: id
          foreignAlias: groupassets
          onDelete: SET NULL
        site:
          class: Site
          local: site_id
          foreign: id
          onDelete: SET NULL
     
    Asset:
      tableName: asset
      actAs: [Timestampable]
      columns:
        typeasset_id: integer
        value: string(255)
        groupasset_id: integer
        useit: boolean
        exist: boolean
        lastview: date
      indexes:
        unique1:
          fields: [typeasset_id,value,groupasset_id]
          type: unique
      relations:
        type:
          class: Typeasset
          local: typeasset_id
          foreign: id
          foreignAlias: listTypeAsset
          onDelete: CASCADE
        group:
          class: groupasset
          local: groupasset_id
          foreign: id
          foreignAlias: listGroupAsset
    j'ai créer deux module admin. et modifié le configure du module groupasset pour qu'il embarque l'asset:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public function configure()
      {
      	unset($this['updated_at']);
     
      	.....
     
        $wrapperForm=new sfForm();
     
        $listasset = $this->getObject()->getListGroupAsset();
        $i=0;
        foreach($listasset as $asset)
        {
        	$i++;
        	$assetForm = new AssetForm($asset);
        	unset($assetForm['groupasset_id']);
        	$wrapperForm->embedForm($i,$assetForm);
     
    	}
    	$this->embedForm('listAsset',$wrapperForm);
      }
    sauf que les forms embarqués sont en colonne et non en ligne.
    Je suis allé dans le cache du modul asset j'ai trouvé le partial _asset.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php if ($field->isPartial()): ?>
      <?php include_partial('groupasset/'.$name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
    <?php elseif ($field->isComponent()): ?>
      <?php include_component('groupasset', $name, array('form' => $form, 'attributes' => $attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes)) ?>
    <?php else: ?>
     
        <?php echo $form[$name]->renderError() ?>      
          <div class="content"><?php echo $form[$name]->render($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes) ?></div>
     
          <?php if ($help): ?>
            <div class="help"><?php echo __($help, array(), 'messages') ?></div>
          <?php elseif ($help = $form[$name]->renderHelp()): ?>
            <div class="help"><?php echo $help ?></div>
          <?php endif; ?>
     
     
    <?php endif; ?>
    ou j'ai supprimer le <div class="content">, ce qui m' a permis d'avoir mes champs en ligne.
    Sauf que dans le formulaire Groupasset il ne prend pas en compte mon formulaire modifié pour embarque les "sous-formulaires".
    J'ai tente de faire la même modif au niveau du module groupAsset mais sans succés

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    je pense avoir trouver une solution:
    c'est mon code pour mon fichier _form.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php use_stylesheets_for_form($form) ?>
    <?php use_javascripts_for_form($form) ?>
     
    <div class="sf_admin_form">
      <?php echo form_tag_for($form, '@groupasset') ?>
        <?php echo $form->renderHiddenFields(false) ?>
     
        <?php if ($form->hasGlobalErrors()): ?>
          <?php echo $form->renderGlobalErrors() ?>
        <?php endif; ?>
     
    <?php 
    	echo '<table>';	          
    	foreach($form as $key=>$widget)
    	{
    		if($key=='listAsset'){
    			echo '<table>';            			              
    			foreach($widget as $subKey=>$subForm){				
    				//echo '<tr><td>'.$subKey.'</td>';
    				if($subKey==1)
    				{
    					echo '<td>&nbsp;</td>';
    					foreach($subForm as $field)
    					{
    						if(!$field->isHidden()) echo '<td>'.$field->renderLabel().'</td>';
    					}
    					echo '</tr>';
    				}
    				foreach($subForm as $field){
    					echo '<td>'.$field->render().'<br>'.$field->renderError().'</td>';
    				}
    				echo '</tr>';
    			}
    			echo '</table>';
    		}
    		elseif(!$widget->isHidden())
    		{
    			echo $widget->renderRow();
    		}
    	}
    	echo '</table>';
    ?>
        <?php include_partial('groupasset/form_actions', array('groupasset' => $groupasset, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper)) ?>
      </form>
    </div>
    le seul point qu'il faudrait améliorer serait la détection du début du tableau des embed form. La j'utilise directement le nom du formulaire, c'est pas top pour factoriser ce code.

  8. #8
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    C'est un peu compliqué à suivre ton histoire...

    Il faudrait que je fasse un truc équivalent ou que je récupère ton appli, là, c'est difficile à suivre.

    Je me demande juste s'il est judicieux de rester accroché sur un mod admin et s'il ne serait pas plus simple de ce baser sur un bête CRUD ?

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    bein je doit avouer que pour l'instant j'aime bien l'admin uniquement pour la page index qui propose une filtre/pagination dont je suis pas sur de pouvoir reproduire dans un CRUD

  10. #10
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu peux parfaitement reproduire le comportement d'un module admin dans un de tes module CRUD. J'ai posté des partials qui permettent de faciliter la chose dans le forum il y a quelques mois.

  11. #11
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    je vais fouiner
    un peu hors sujet, mais a part pour cette idée de filtre en page index, a quoi sert le module admin.
    Vue qu'il doit être rare de ne pas avoir à personnaliser un tant soit peu son module et donc d'être coincé par le fichier generator ?

  12. #12
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Pour éditer des tables de paramètres, de villes, de titre...

    Il convient parfaitement et permet d'aller très vite.

    Il est possible aussi de n'utiliser que la partie liste et de renvoyer le reste sur une partie du module écrit en dur, mais on perd beaucoup d'intérêt et il peut-être aussi rapide de tous réécrire dans ces cas là.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sous-Formulaire nombre de lignes vides ?
    Par popo68 dans le forum IHM
    Réponses: 25
    Dernier message: 11/12/2006, 09h28
  2. formulaire/sous-formulaire suppression de lignes
    Par tazmania dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2006, 12h22
  3. Ouvrir formulaire correspondant à une ligne
    Par toto10 dans le forum Access
    Réponses: 19
    Dernier message: 11/07/2006, 19h21
  4. Réponses: 2
    Dernier message: 02/02/2006, 08h23
  5. [Formulaire continu] une ligne sur deux en gris
    Par genius99 dans le forum IHM
    Réponses: 7
    Dernier message: 30/10/2005, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo