PHP / ZendFramework / MVC-我的变量不是null,但他不会显示变量

时间:2018-12-04 09:49:28

标签: php model-view-controller zend-framework

首先,感谢您阅读我的问题,希望您能对我有所帮助。昨天我整天都走过去,发现问题,但我不明白。

我的问题:我必须根据一个id显示一个数据表,我的id存在,但是服务器说不,我不知道为什么。某些ID可以正常工作,就像旧ID一样,但新ID无法工作。

如果您听不懂,那就问我。

我认为问题出在控制器试图获取ID时。

让我们看看代码

我的表单:

 private function searchIdDepotVal()
{
    $libelleIdDepotVal = $this
        ->_config
        ->admin
        ->libelle
        ->idDepot;
    $idDepotVal = new Zend_Form_Element_Text('idDepot');
    $idDepotVal->setLabel($libelleIdDepotVal)
               ->setAttrib('id', 'idDepot');
    return $this->removeIdDecorator($idDepotVal);
}

/**
 * Création de l'élément bouton Rechercher de la fiche dépét
 *
 * @return $rechercher
 */
private function createRechercherDepot()
{
    $rechercher = new Zend_Form_Element_Submit(
            $this
            ->_config
            ->admin
            ->button
            ->rechercherdepot
    );
    $rechercher->setAttrib('id', 'rechercherdepot');
    $rechercher->setAttrib('name', 'rechercherdepot');
    $rechercher->setDecorators(array('ViewHelper'));
    return $rechercher;
}

我的查询:

public function getsuiviflutech($idDepot){
     $this->executeQueries("
     Select evt_id, evt_dt, evt_nomfic, evt_statut, evt_texte from         depot_evt 
     where id_depot = ".$idDepot."
     order by evt_dt desc"
             );
     return $this->getAllRows();

}
}

我的控制器:

 public function suivifluxtechniqueAction(){

   // Arguments passés dans l'URL
    $session = Zend_Registry::get('session');
    $params = $this->_getAllParams();

// Init du formulaire
    $this->_logger->info('recherche de dépôt : ' . date('H:i:s'));
    $this->view->userName   = Zend_Registry::get('session')->identifiant;
    $form                   = new Forms_Admin();
    $this->view->lib        = $this->_labelsFile;
    $this->view->etatLancement = "vide";
    $aFiltersData = array();

// Définir le n° de dépôt au choix dans l'URL ou dans le formulaire    
    $this->view->listdepotdrpadmin=array();
    $idDepot = "";
    $init=true;
    if ($this->getRequest()->isPost()) {
        $init=false; // Pour détecter le clic sur bouton recherche
        $aFiltersData = $this->getRequest()->getPost();
        if ( isset($aFiltersData['idDepot']) ) {                
            if (is_numeric( trim($aFiltersData['idDepot']) )) {
                $idDepot = trim($aFiltersData['idDepot']);
            } 
        } 
        if ( isset($aFiltersData['nbJours']) ) {
            if (is_numeric( trim($aFiltersData['nbJours']) )) {
                $nbJours = str_replace('\'', '',trim($aFiltersData['nbJours']));
            } 
        } 
    } else {
      if ( isset($params['idDepot']) ) 
        $idDepot = $params['idDepot'];
      if ( isset($params['idSite']) ) 
        $idSite = $params['idSite'];
    }

// Vérifier si le dépôt existe 
    $depotMapper = new Supervision_Model_DepotMapper();
    $depotExist = $depotMapper->isDepotExist($idDepot);
  // Si oui : aller chercher les infos à afficher  
    if ($depotExist) {
        $this->view->idDepot = $idDepot;
        $oDepotAdmin = new Services_DepotAdmin();
        $listDepotAdmin = $oDepotAdmin->getsuiviflutech($idDepot);
        if (count($listDepotAdmin) == 1) {
            $this->view->listdepotdrpadmin = $listDepotAdmin[0];     
            //if ($this->view->statutdepot == '51101')
            //    $this->view->etatLancement = "MESS001";
            $this->view->isValidAnnulerValidationSupervision = $oDepotAdmin->isValidAnnulerValidationSupervision($idDepot);
            $aFiltersData['idDepot'] = $idDepot;
          // Positionner le filtre qui permet d'effacer le champ idDepot avec le bouton annuler
            $session->filtresAdminForm = $aFiltersData;
          // Afficher les résultats via la div displayResults
            $this->view->displayResults  = 1;
            if (!isset($params['lancer']) )
                $this->view->flagOngletAdmin = "depot";
            $form->populate($aFiltersData);
        }
        else $depotExist = false;
    } 

  // Si la n° de dépôt saisi ne correspond à rien, afficher 1 message d'erreur
    if (  (!$depotExist) && ( ($idDepot != "") || (!$init) )  )
    {
        if (  ( !isset($aFiltersData['idSite']) )  && ( !isset($params['lancer']) ) && ( !isset($params['errLancer']) )  ) {
            $this->view->etatLancement = "ERR001";
            $aFiltersData['idDepot'] = $idDepot;
            $this->view->flagOngletAdmin = "depot";
            $form->idDepot->class  = "errorField";
        }
    }
    if ( isset($params['reouvrir']) ) {
        $this->view->etatLancement = "MESS001";
        $this->view->flagOngletAdmin = "depot";
    } 
    if ( isset($params['annuler']) ) {
        $this->view->etatLancement = "MESS002";
        $this->view->flagOngletAdmin = "depot";
    } 

    $session->filtresAdminForm = $aFiltersData;
    $form->populate($aFiltersData);
    $this->view->form       = $form;
} 

我的html:

 <h3><a href="#"><?php echo $this->lib->onglet->ongletAdmin->tab1 ?></a></h3>
  <div>

   <!------------------------------------->   
   <!-- 1er cadre : Filtre de recherche -->
   <!------------------------------------->
    <fieldset id="filtresRecherche">
    <legend>
    <?php
        echo $this->lib->admin->libelle->fieldsetFiltresRecherche;
    ?>
    </legend>
    <form action="/supervision/admin/suivifluxtechnique"
        method="POST" name="formAdmin" id="searchForm">
        <div id="adminRecherche">
            <div id="champDepot">
                <?php echo $this->form->idDepot; ?>
            </div>

            <div id="bouton">
                <?php 
                   $valueRechercheDepot = $this->lib->admin->button->rechercherdepot;
                   echo $this->form->$valueRechercheDepot;
                 /* Finalement il n'est pas nécessaire d'avoir 1 bouton "Réinitialiser"  
                   $valueAnnuler = $this->lib->admin->button->annuler;
                   echo $this->form->$valueAnnuler;                     
                  */
                 ?> 
             </div>
             <div class="clear"></div>
        </div>
    </form>    
    </fieldset>
    <br>        

   <!----------------------------------------->   
   <!-- 2ème cadre : Résultats de recherche -->
   <!----------------------------------------->   
    <div id="adminResults">
      <fieldset id="resultatsRecherche">
        <legend>
        <?php
            echo $this->lib->admin->libelle->fieldsetResultatsRecherche;
        ?>
        </legend>
        <div id="result">
          <?php if ( !is_null($this->listdepotdrpadmin) ) { ?>
            <table id="supervisionResDepotDrp">
                <thead>
                    <tr>
                        <th class="center">EVT_ID</th>
                        <th class="center">EVT_DT</th>
                        <th class="center">EVT_NOMFIC</th>
                        <th class="center">EVT_STATUT</th>
                        <th class="center">EVT_TEXTE</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                      <?php 
    // Le 7ème champ statut_depot n'est pas affiché, car il sert uniquement pour les RG
    // Il est redondantt avec le 6ème qui est sa traduction en langage humain
                        $i=0; 
                        foreach ($this->listdepotdrpadmin as $elem) { ?>
                          <td class="center"><?php if ($i++ < 7) echo utf8_encode($elem); ?></td>             
                      <?php } ?>
                    </tr>
                </tbody>
            </table>
          <?php } ?>
        </div>
      </fieldset>
    </div>
  </div>

答案: enter image description here

0 个答案:

没有答案