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

 PHP Discussion :

je débute avec symfony [1.x]


Sujet :

PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut je débute avec symfony
    Bonjour a tous, je test mon premier projet avec symfony, mais j'ai déjà une question sur la création du fichier yaml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       nom:  { type: varchar, size: 35,required: true}
    dans cette déclaration de nom, que veut dire "required: true" ?

    je vous remercie de votre réponse, je pense que j'aurai d'autre question au fur est à mesure que j'avance.

  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
    Le shema.yml est certainement une des parties les plus importante de ta future application. C'est là que le modèle objet des données est défini (et pas la structure de la base, même si cette dernière découle du modèle objet).

    Par contre, dans la version 1.2 de doctrine, il n'y a pas d'option "required". Ce qui me laisse perplexe. Pour indiquer qu'un champ doit être utilisé, l'option sera notnull: true

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci de ta réponse, je crois que je me suis trompé sur un tuto , jai repris celui du tuto jobeetjob
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    JobeetJob:
      actAs: { Timestampable: ~ }
      columns:
        category_id:  { type: integer, notnull: true }
        type:         { type: string(255) }
    actAs a quoi il sert ? j'ai vu que cette ligne était sur les 3 tables du tuto
    "notnull : true", si on le met pas cette argument il est par défaut false ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Par défaut
    Tous les arguments sont à false par défaut.
    Le behavior Timestampable (voir http://www.doctrine-project.org/proj...s/en#behaviors) est un outil fournit par Doctrine qui permet de rajouter les champs created_at et updated_at à un objet et de les gérer automatiquement.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci de ton lien

    pour construire un ylm peut ton faire l'inverse ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    créé dans l'interface phpmyadmin ou pgAdminIII notre base de donnée et demander a symfony de lire la base de donnée et de nous pondre le schema yalm?
    j'ai essayer de contruire le model de base de donné avec la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    symfony doctrine:build --model
    avec ce yalm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    contact:
      columns:
       contact_id:  { type: integer, primaryKey: true, autoIncrement:true}
       nom:         { type: varchar, size: 40} 
       prenom:      { type: varchar, size: 40}
       adresse:     { type: Text } 
       courriel:    { type: varchar, size: 40, index:unique}
    j'ai une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Invalid schema element named "primaryKey" at path "contact->columns->contact_id"

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Par défaut
    Pour la première question, oui on peut mais c'est fortement déconseillé.

    Pour le reste, le nom de l'attribut c'est primary est pas primaryKey.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    je n'y arrive pas il doit manquer quelque chose dans le controler


    la boucle qui fait apparaître numéro des contacte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <?php foreach ($jobeet_jobs as $jobeet_job): ?>
        <tr>
          <td><a href="<?php echo                                                      url_for('job/show?id='.$jobeet_job->getId()) ?>"><?php echo $jobeet_job->getId() ?></a></td>
     
          <td>
    <?php include_partial('form', array('form' => $form)) ?>
     
     
          </td>
        </tr>
        <?php endforeach; ?>
    j'ai donc ajouter dans executeIndex pour avoir un instance de form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      public function executeIndex(sfWebRequest $request)
      {
              $this->form = new JobeetJobForm();
     
        $this->jobeet_jobs = Doctrine_Core::getTable('JobeetJob')
          ->createQuery('a')
          ->execute();
      }
    puis je l'ai diriger vers une autre vu qui doit normalement apparâitre le lien pour supprimer ce job

    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
     
     
    <form action="<?php echo url_for('job/'.($form->getObject()->isNew() ? 'create' : 'update').(!$form->getObject()->isNew() ? '?id='.$form->getObject()->getId() : '')) ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
    <?php if (!$form->getObject()->isNew()): ?>
    <input type="hidden" name="sf_method" value="put" />
    <?php endif; ?>
      <table>
          <h1>form2</h1>
        <tfoot>
          <tr>
            <td colspan="2">
              &nbsp;<a href="<?php echo url_for('job/index') ?>">Back to list</a>
              <?php if (!$form->getObject()->isNew()): ?>
                &nbsp;<?php echo link_to('Delete', 'job/delete?id='.$form->getObject()->getId(), array('method' => 'delete', 'confirm' => 'Are you sure?')) ?>
              <?php endif; ?>
              <input type="submit" value="Save" />
            </td>
          </tr>
        </tfoot>
        <tbody>
     
        </tbody>
      </table>
    </form>
    par contre ici mon form n'est pas un lien ?

  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
    Je ne comprend plus, ni ce que tu veux faire, ni comment tu envisages de la mettre en oeuvre.

    L'idée d'imbriquer deux form dont un qui ne sert pas de form ne me parait pas opportune.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    je vais essayer de mieux expliquer ce que je souhaite faire

    on suppose qu'on est a cette page

    mon but est d'effacer tous ce qui concerne sensio lab

    ici j'ai donc 1 table avec 4 colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <td>ID JOB </td>
        <td> METIER</td>
        <td>ENSEIGNE</td>
        <td>ACTION</td>
    au bout de table je souhaite mettre un lien pour supprimer un enregistrement d'un job, donc d'après ce que j'ai compris il faut générer un formulaire pour pourvoir mettre un input de type hidden et envoyer a la class delete pour effacer un job, comme tu m'a dit qu'il ne sert a rien de crée 2 class forms j'ai donc intégré dans l'indexSuccess qui correspond a l'image que j'ai posté
    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
     
    <div id="jobs">
        <table class="jobs">
     
        <?php foreach ($jobeet_jobs as $i => $job): ?>
             <tr class="<?php echo fmod($i, 2) ? 'even' : 'odd' ?>">
                <td class="location"><?php echo $job->getLocation() ?></td>
                 <td class="position">
                 <a href="<?php echo url_for('job/show?id=' . $job->getId()) ?>">
                            <?php echo $job->getPosition() ?>
                  </a>
                  </td>
                  <td class="company"><?php echo $job->getCompany() ?></td>
                  <td>
     
                     <form action="<?php echo url_for('job/' . ($form->getObject()->isNew() ? 'create' : 'update') . (!$form->getObject()->isNew() ? '?id=' . $form->getObject()->getId() : '')) ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
                     <?php if ($form->getObject()->isNew()): ?>
                     <input type="hidden" name="sf_method" value="put" />
                     <?php endif; ?>
                     <table>
                    <tfoot>
                     <tr>
                     <td colspan="2">
                     <?php if ($form->getObject()->isNew()): ?>
                     &nbsp;<?php echo link_to('Delete', 'job/delete?id=' . $form->getObject()->getId(), array('method' => 'delete', 'confirm' => 'Are you sure?')) ?>
                     <?php endif; ?>
                      </td>
                      </tr>
                      </tfoot>
                      </table>
                      </form>
                   </td>
                </tr>
            <?php endforeach; ?>
        </table>
    </div>

    moi ce que j'ai comprs c'est lorsqu'on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="va_a_url_demande_après_avoir_valider" type="methode">
    l'url demandé est pour le moment indigeste pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <form action="<?php echo url_for('job/' . ($form->getObject()->isNew() ? 'create' : 'update') . (!$form->getObject()->isNew() ? '?id=' . $form->getObject()->getId() : '')) ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
    que veut dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo url_for('job/' . ($form->getObject()->isNew() ?
    le point d'interrogation c'est comme la requête préparer?


    getObjet() sert t'il de coquille vide qu'on pourra metre n'importe quelle variable de n'importe quel type, des variables qui servira a connaitre le numéro du job enregisrer ou son ensigne par exemple.

    Est ce que j'ai bien expliquer ce que je voulais ?
    Images attachées Images attachées  

  10. #10
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Par défaut
    Le '?' suivi de ':' est l'opérateur ternaire ce qui veut dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expression ? 'si l\'expression est vrai je retourne cette chaine' : 'sinon celle-ci';
    Donc dans ton cas si l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->getObject()->isNew()
    retourne vrai alors tu écrira la chaîne sinon .

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 146
    Par défaut
    merci a toi woodka
    lorsqu'on envoie un "PUT", est ce lui qui fournit le jeton ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <input type="hidden" name="sf_method" value="put" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        $request->checkCSRFProtection();
    a quoi ressemble la class Object()?? j'ai essayer le le rechercher mais je l'ai pas trouver

    j'ai vu ce champ dans le modele
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    token:
    { type: string(255), notnull: true,
    X unique: true }
    Mais on garde dans une base de donnée le jeton ?

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

Discussions similaires

  1. [1.x] Validation conditionnelle avec Symfony
    Par MacReiben dans le forum Symfony
    Réponses: 1
    Dernier message: 17/07/2008, 13h25
  2. [1.x] Problème de génération de model propel avec symfony 1.1
    Par youknowriad dans le forum Symfony
    Réponses: 2
    Dernier message: 04/07/2008, 16h13
  3. [1.x] Message d'erreur avec symfony propel-build-model
    Par thewind1 dans le forum Symfony
    Réponses: 6
    Dernier message: 03/04/2008, 18h09
  4. [1.x] Retours d'expérience avec Symfony
    Par ygrim dans le forum Symfony
    Réponses: 6
    Dernier message: 05/09/2007, 15h13

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