RECUPERATION DES DONNEES DANS LA VUE

38 views
Skip to first unread message

Namaiwa Nassirou

unread,
Jan 15, 2016, 1:27:50 PM1/15/16
to ZnetDK
Bonjour
Bonne année
En fait j'aimerais savoir comment on peut récupérer les données dans la vue sans passer par un composant ou Ajax .
        Merci d'avance.

Pascal Martinez

unread,
Jan 17, 2016, 4:24:47 PM1/17/16
to ZnetDK
Bonjour Namaiwa,

Egalement tous mes voeux.

Les données affichées dans une vue peuvent provenir d'appels réalisés directement en PHP.

Par exemple, la vue myview.php est déclarée dans le script menu.php de l'application :

<?php
namespace app;
class Menu implements \iMenu {
   
static public function initAppMenuItems() {
       
\MenuManager::addMenuItem(NULL, 'myview', 'Ma vue');
   
}
}

Et créée dans le dossier app/view de l'application :

<ul>
<?php
    $productsDAO
= new \app\model\ProductsDAO();
   
while($row = $productsDAO->getResult()) {
        echo
'<li>' . $row['name'] . '</li>';
   
}
?>
</ul>

Cordialement,

Pascal MARTINEZ


redah...@gmail.com

unread,
Jan 18, 2016, 2:13:43 PM1/18/16
to ZnetDK
Merci pour la réponse.
Je ne m’attendais pas du tout, pour moi  la couche présentation ne pouvais accéder a la couche modèle sans passer par le controller.

redah...@gmail.com

unread,
Jan 19, 2016, 6:41:59 AM1/19/16
to ZnetDK
Bonjour
peut on accéder aux données du traitement dans une vue
par exemple:
<?php
      $sal = new \app\controller\SalarierUpCtrl();
     
      echo "<pre>";
      var_dump($_POST);
      var_dump($sal->action_upload());

      echo "</pre>";
 ?>

Pascal Martinez

unread,
Jan 19, 2016, 4:59:36 PM1/19/16
to ZnetDK
Bonjour,

Les données du modèle peuvent être transmises à la vue par l'intermédiaire d'un contrôleur d'application en procédant comme suit :

Par exemple, la vue mycontroller est déclarée dans le script menu.php de l'application :
<?php
namespace app;
class Menu implements \iMenu {
   
static public function initAppMenuItems() {

       
\MenuManager::addMenuItem(NULL, 'mycontroller', 'Mon autre vue');
   
}
}

Le contrôleur d'application mycontroller.php est créé dans le dossier app/controller de l'application et implémente l'action show :
<?php
namespace app\controller;
class MyController extends \AppController {


   
static protected function action_show() {

        $productsDAO
= new \app\model\ProductsDAO();

        $products
= array();
       
while($row = $productsDAO->getResult()) {
            $products
[] = $row;
       
}
        $response
= new \Response();
        $response
->setView('myotherview', 'view', $products);
       
return $response;
   
}
}

Enfin la vue myotherview.php est créée dans le dossier app/view et reçoit dans la propriété viewCaller les données issues du contrôleur à l'origine de l'appel :
<ul>
<?php
    $products
= $this->viewCaller;
   
foreach ($products as $value) {
        echo
'<li>' . $value['name'] . '</li>';
   
}
?>
</ul>

C'est finalement un peu plus complexe mais ça permet de respecter le pattern MVC.

Cordialement,

Pascal MARTINEZ

redah...@gmail.com

unread,
Jan 20, 2016, 11:40:10 AM1/20/16
to ZnetDK
Bonjour
Merci pour cette solution
Reply all
Reply to author
Forward
0 new messages