Sujet : \Hoa\Form

@Hywan : tu ma dit que \Hoa\Form était intégrer a \Hoa\Xyl , d'où ma question comment on gere ca avec le controlleur , la gestion des $_POST etc smile bref un exemple concret big_smile


Merci d'avance smile Thehawk cool

Apprend Hoa et est heureux smile

2

Re : \Hoa\Form

Voici un peu de concret (extrait d'un mail reçu de @Hywan quand on parlait formulaire pour Hoathis wink) :

index.php (ta page qui affiche le formulaire)

<?php

require_once '/usr/local/lib/hoa/Core/Core.php';

from('Hoa')
-> import('Xyl.~')
-> import('Xyl.Interpreter.Html')
-> import('File.Read')
-> import('Http.Response');

$xyl = new \Hoa\Xyl(
    new \Hoa\File\Read('main.xyl'),
    new \Hoa\Http\Response(),
    new \Hoa\Xyl\Interpreter\Html()
);

$xyl->render();

ton formulaire (la vue) :

<?xml version="1.0" encoding="utf-8"?>

<document xmlns="http://hoa-project.net/xyl/xylophone">
  <title>Form</title>

  <yield name="my_form">
    <section1>
      <title>Form</title>

      <form method="post" action="do.php" onerror="etop">
        <p><label for="t">Foobar:</label>
           <input type="text" id="t" name="t" autofocus="autofocus" /></p>
        <p><label for="c2">The cake is:</label>
           <input type="checkbox" name="c1" value="a_lie" /> a lie
           <input type="checkbox" id="c2" name="c2" value="not_a_lie" checked="checked" /> not a lie</p>
        <p>What?
           <input type="radio" name="r" value="yes" checked="checked" /> a lie
           <input type="radio" name="r" value="not" /> not a lie</p>
        <p><label for="e">Test error:</label>
           <input type="text" id="e" name="e"
                  validate-x="boundinteger(0, 12) or empty()" onerror-x="e1 e2" /></p>
        <p>Select:
           <select name="s">
             <option value="a">A</option>
             <optgroup label="'b-c'">
               <option value="b">B</option>
               <option value="c" selected="selected">C</option>
             </optgroup>
             <optgroup label="'d'">
               <option value="d">D</option>
             </optgroup>
           </select></p>
        <p>Textarea:
           <textarea name="tt"
                     validate="string(boundinteger(4, 12))"
                     onerror="e3">abc foo xyz</textarea>
           <error id="e3">ERROR!</error></p>
        <p>Multi:<fbreak />
           <input type="text" name="m[]" /><fbreak />
           <input type="text" name="m[]" /><fbreak />
           <input type="text" name="m[]" /></p>

        <p><input type="submit" /></p>
      </form>
    </section1>
  </yield>

  <error id="etop">
    <section1>
      <title>Errors</title>

      <error id="e1"><p>I'm an error (e1)!</p></error>
      <error id="e2"><p>I'm another error (e2)!</p></error>
    </section1>
  </error>

  <my_form />
</document>

et le code pour le traiter :

do.php

<?php

require '/usr/local/lib/hoa/Core/Core.php';

header('Content-Type: text/plain');

from('Hoa')
-> import('Xyl.~')
-> import('Xyl.Interpreter.Html.~')
-> import('File.Read')
-> import('Http.Response');

$xyl = new \Hoa\Xyl(
    new \Hoa\File\Read('main.xyl'),
    new \Hoa\Http\Response(),
    new \Hoa\Xyl\Interpreter\Html()
);

$xyl->interprete();

$form = $xyl->getConcrete()
            ->getConcreteElement($xyl->querySelector('form'))
            ->getFormData();
var_dump($form);

3

Re : \Hoa\Form

Merci de ta réponse smile cela n'a pas tout résolu mais ca avance sur la comprenette big_smile

Dit moi : chez moi je fais : var_dump($xyl->querySelector('div')); ou var_dump($xyl->querySelector('form)); et cela me retourne false :s j'ai loupé un passage ? lol

Apprend Hoa et est heureux smile

4

Re : \Hoa\Form

Dans l'exemple on ne dump pas directement le résultat de $xyl->querySelector('form') ?

$form = $xyl->getConcrete()
            ->getConcreteElement($xyl->querySelector('form'))
            ->getFormData();

var_dump($form);

Ou alors j'ai rien compris à ta question ?

5

Re : \Hoa\Form

Hey smile,

Est-ce que tu as bien interprété XYL avant ?

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

6

Re : \Hoa\Form

je fais :           

  $xyl = $this->view;
            $xyl->interprete();
            $form = $xyl->getConcrete()->getConcreteElement()
                   ->getConcreteElement($xyl->querySelector('form'))
               ->getFormData();
           var_dump($form);

J'ai faux ???

ce la me retourne :

Hoa\Core\Exception\Idle::error(): (-1) Argument 1 passed to Hoa\Xml\Element\Concrete::getConcreteElement() must implement interface Hoa\Xml\Element\Element, none given, called in C:\wamp\www\Cxp\Application\Controller\Index.php on line 25 and defined
in C:\wamp\www\Hoa\Central\Library\Xml\Element\Concrete.php at line 231.
#0 C:\wamp\www\Hoa\Central\Library\Xml\Element\Concrete.php(231): Hoa\Core\Exception\Idle::error(4096, 'Argument 1 pass...', 'C:\wamp\www\Hoa...', 231, Array)
#1 C:\wamp\www\Cxp\Application\Controller\Index.php(25): Hoa\Xml\Element\Concrete::getConcreteElement()
#2 [internal function]: Application\Controller\Index->ConnexionAction()
#3 C:\wamp\www\Hoa\Central\Library\Dispatcher\Basic.php(217): ReflectionMethod->invokeArgs(Object(Application\Controller\Index), Array)
#4 C:\wamp\www\Hoa\Central\Library\Dispatcher\Dispatcher.php(174): Hoa\Dispatcher\Basic->resolve(Array)
#5 C:\wamp\www\Cxp\Application\Public\index.php(71): Hoa\Dispatcher\Dispatcher->dispatch(Object(Hoa\Router\Http), Object(Hoa\Xyl\Xyl))
#6 {main}

Julien qui en chie mais qui aime ca big_smile

Apprend Hoa et est heureux smile

7

Re : \Hoa\Form

Bah déjà, tu demandes d'interpréter la vue dans laquelle tu es. Elle est déjà interprétée wink.
Ensuite, tu fais appel deux fois getConcreteElement(), dont la première fois sans argument (d'où le message d'erreur).
Enfin, ça doit ressembler à ça dans l'ensemble.

« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »