bon mon problème c'est que vraisemblablement le controller m'insère du texte dans la vue ce qui me crée un décalage dans la vue
ce qui fait que ma balise container se décale d'en haut comme si elle avait un margin-top



le controller

function AdminActus()
  {
  $this->layout = 'admin';
  /**
   * Enregistrement configuration Actus sélectionnés
   */

  /* Lecture de la bdd pour voir les informations déjà enregistré */
  $this->set('param', $this->Home->read(null,1));
  /**
   * Enregistrement des paramètres configuration slider Actualités 
   */
   if ($this->request->is('post')) {
      if(!empty($this->data'Home']))
      {
        // If the form data can be validated and saved...
        $this->Home->id=1;

        if ($this->Home->save($this->request->data))
         {
            // Set a session flash message and redirect.
            $this->Session->setFlash('Configuration sauvegardé pour le Slider "à la une" ','valid',array());
            $this->set('param', $this->Home->read(null,1));
        }
      }
                                  }

  /**
  * Gestion Articles Administration Pour slider Portail Intra-air
  **/

   /*Lecture de la base de données actu_air Pour récup choix articles */

     /*Renvoi à la vue des articles auparavant sélectionnés */
    $this->set('actuschoisi', $this->HomeActu->find('all',array(
      'fields'=>array('HomeActu.id','HomeActu.id_actu','HomeActu.date_end','HomeActu.title_actu','HomeActu.id_rubr'),
      'order'=>'HomeActu.id_actu ASC',
      'conditions'=>array('HomeActu.id_rubr'=>7)
      )));
    $this->set('CatId',7);
    /*Comptage du nombre d'articles sélectionnés pour les messages informations */
    $this->set('total',$this->HomeActu->find('count',array(
                                'conditions'=>array('HomeActu.id_rubr'=>7)
                                )
    ));

    /* Listing de toutes les actus de la catégorie A la Une et pagination*/
    $adminactus = $this->paginate('AdminActu');
    /* Renvoi à la vue des actus */
    $this->set('adminactus',$adminactus);

    if(isset($this->params'requested']))
          {
          return $adminactus = $this->paginate('AdminActu');
         $this->set('adminactus',$adminactus);
          }
          $adminactus = $this->paginate('AdminActu');
          $this->set('adminactus',$adminactus);

   /* Récupération nombre actus Possible*/
   $nbr_actus = $this->Home->find('first', array(
   'fields' => array('Home.nbr_actus'),
   'limit' =>1));
   $nbr_actus =Set::extract($nbr_actus,'Home.nbr_actus');
  /*renvoi à la vue du nbre actus pour le script jquery */
  $this->set('nbr_actus', $nbr_actus);

    /* Enregistrement Checkbox + datepicker */

    if ($this->request->is('post')) 
     {
          if(!empty($this->data'HomeActu']) && isset($this->data'HomeActu']))
          {

          $selectActus=$this->request->data'HomeActu'];
          $this->HomeActu->deleteAll(array('HomeActu.id_rubr'=>7));
                  foreach($selectActus as $k => $selectActu):

                  {       
                        if(!empty($this->data'HomeActu']$k]'id_actu']))
                          {
                                $Actusave =$this->data'HomeActu']$k];

                                $this->HomeActu->create();
                                $this->HomeActu->save($Actusave);                    
                          }

                  }
                endforeach;
                /* Compter le nombre d'actus présente pour le message information */
                $nbrActu=$this->HomeActu->find('count',array(
                  'conditions'=>array('HomeActu.id_rubr'=>7)
                ));
                if($nbrActu>1)
                {
                   $this->Session->setFlash('Les articles sont sélectionnés pour le slider', 'valid',array());
                }
                else
                {
                   $this->Session->setFlash('l\'article est sélectionné pour le slider', 'valid',array());
                }

                 /*Lecture de la base de données actu_air Pour récup choix articles */
                  $ActusChoisi=$this->HomeActu->find('all',array(
                  'fields'=>array('HomeActu.id','HomeActu.id_actu','HomeActu.date_end','HomeActu.title_actu'),
                  'order'=>'HomeActu.id_actu ASC',
                  'conditions'=>array('HomeActu.id_rubr'=>7)
                  ));
                  /* Renvoi à la vue pour déterminer le nombre d'actu choisi de la catégorie des articles à la une*/
                  $this->set('total',$this->HomeActu->find('count',array(
                  'conditions'=>array('HomeActu.id_rubr'=>7)
                )));
                  /*Renvoi à la vue des articles auparavant sélectionnés */

                  $this->set('actuschoisi',$ActusChoisi);

          }

      }
      /**/
    } /** Fin de la function AdminActus

La vue

<?php echo $this->Form->create('Home',array('class'=>'well form-horizontal')); ?>
    <?php echo $this->Form->input('nbr_actus',array(
      'label' =>array('text'=>'Nombre d\'actualités ', 'class'=>'control-label'),
      'class'=> 'span2',
      'div'=>'control-group',
      'selected'=>$param'Home']'nbr_actus'],
      'options'=> array('4' => '4','5' => '5','6'=>'6')));?><br/>
    <?php echo $this->Form->input('easing',array(
      'label' =>'Effet Easing',
      'class'=> 'span2',
       'div'=>'control-group',
      'selected'=>$param'Home']'easing'],
      'options'=> array('linear'=>'linéaire','swing'=>'swing','quadratic'=>'quadratic','cubic'=>'cubic','elastic'=>'elastique'),
      )); ?> <br/>
        <?php echo $this->Form->input('effect',array(
      'label' =>'Effet de Transition',
      'class'=> 'span2',
       'div'=>'control-group',
      'selected'=>$param'Home']'effect'],
      'options'=> array('none'=>'Sans','scroll'=>'scroll','directscroll'=>'Directscroll','fade'=>'Fade','crossfade'=>'Crossfade','cover'=>'Cover','uncover'=>'Uncover'),
      )); ?> <br/>
    <?php echo $this->Form->input('anim',array(
      'label'=>'Slider dynamique',
      'class'=> 'span2',
       'div'=>'control-group',
      'selected'=>$param'Home']'anim'],
      'options'=> array('true'=>'oui','false'=>'non'))
      );?> <br/>
    <?php echo $this->Form->input('aff_play',array(
      'label'=>'Display play/pause',
      'class'=> 'span2',
       'div'=>'control-group',
      'selected'=>$param'Home']'aff_play'],
      'options'=> array('true'=>'oui','false'=>'non'))
      );?> <br/> 
      <?php echo $this->Form->input('delay_anim',array(
      'label'=>'Durée affichage actualité',
      'class'=> 'span2',
      'rel'=>'popover',
      'data-content'=>'La durée d\'affichage actualité doit être comprise en 5 s (5000) et 30 s (3000)',
      'data-original-title'=>'Durée Affichage Actualité',
       'div'=>'control-group',
        'error'=>array(
                  'attributes'=>array('wrap'=>'span', 'class'=>'help-inline')),
      'default'=>array( $param'Home']'delay_anim'])))

      ;?><br/>    
      <div class="form-actions">
      <?php echo $this->Form->submit('Enregistrer les paramètres', array(
      'class'=>'btn btn-primary',
      'div'=>false));
      echo $this->Form->button('Annuler',array(
      'type'=>'reset',
      'class'=>'btn'));
      echo $this->Form->end();
 ?>
</div>
<h3>Articles Slider</h3>
<table class="table table-bordered">
 <tr>

   <?php if(!empty($actuschoisi)&& ($total>1))
   {
     echo "<td colspan=\"2\">
       <th>". $this->Html->link($this->Html->image('database-delete.png',array(
                                    'alt'=> 'Supprimer tout les articles du slider ',
                                    'title' =>'Supprimer tout les article du slider '))
                                    ,array(
                                   'controller' =>'Admin',
                                   'action'=>'deleteActu',
                                  'all','?'=>array('id_rubr'=> $CatId),
                                      ),
                                    array('escape'=>false),
                    "Voulez vous retirer tout les articles du slider ?").
      "</th>
    </td> ";
  }
  ?>
   </tr>   
    <tr>
        <th>Titre</th>
         <th><i class="icon-calendar"></i> Date de fin de publication Intra-Air</th>
         <th>Actions</th>
    </tr>

<?php
 if(empty($actuschoisi))
   {
            if( $param'Home']'nbr_actus']>1)
            {
             echo "
              <tr>
              <td>Les ".$param'Home']'nbr_actus']." articles sont choisis par ordre antéchronologique</td>
              </tr>

             ";
           }
           else
           {
            echo "
                  <tr>
                  <td>L'article est choisi par ordre antéchronologique</td>
                  </tr>

                 ";
           }
    }
foreach ($actuschoisi as $k => $actuchoisi):?>
    <tr>

        <td>
        <?php echo $actuchoisi'HomeActu']'title_actu']; ?>
        </td>
        <td> <?php echo $actuchoisi'HomeActu']'date_end']; ?></td>
        <td> <?php echo $this->Html->link($this->Html->image('database-delete.png',array(
                                    'alt'=> 'Supprimer l\'article du slider ',
                                    'title' =>'Supprimer l\'article du slider'))
                                    ,array(
                                   'controller' =>'Admin',
                                   'action'=>'deleteActu',
                                    $actuchoisi'HomeActu']'id']),
                                    array('escape'=>false),
                    "Voulez vous vraiment retirer cet article du slider ?"); ?>
       <?php echo $this->Html->link($this->Html->image('database-edit.png',array(
                                    'alt'=> 'Éditer les paramètres de l\'article ',
                                    'title' =>'Éditer les paramètres de l\'article '))
                                    ,array(
                                   'controller' =>'Admin',
                                   'action'=>'editActu',
                                    $actuchoisi'HomeActu']'id']),
                                    array('escape'=>false),
                    "Voulez vous vraiment éditer les paramètres de cet article ?"); ?></td>
    </tr>
<?php endforeach; ?>
</table>
<h3>Articles catégorie " la une"</h3>
    <table class="table table-bordered">
    <tr>

        <th>#</th>
        <th><?php echo $this->Paginator->sort('title', 'Titre'); ?></th>
        <th><?php echo $this->Paginator->sort('created', 'Date de création'); ?></th>
         <th><?php echo $this->Paginator->sort('modified', 'Date de dernière modification'); ?></th>
         <th>Date de fin de publication</th>
    </tr>
<?php
foreach ($adminactus as $k => $adminactu):
$id=$adminactu'AdminActu']'id']; ?>
    <tr>
    <?php echo $this->Form->create('HomeActu',array('class'=>'well form-horizontal')); ?>
        <td> <?php echo $this->Form->input('HomeActu.'.$k.'.id_actu', array('multiple' => 'checkbox', 'value' => $id, 'hiddenField' => false, 'label' =>false ,'checked' => '' )); ?></td>
        <td><?php echo $adminactu'AdminActu']'title'];?>
            <?php echo $this->Form->hidden('HomeActu.'.$k.'.title_actu',array('value'=> $adminactu'AdminActu']'title']));?>
        </td>
        <td><?php echo $adminactu'AdminActu']'created']; ?></td>
         <td><?php echo $adminactu'AdminActu']'modified']; ?></td>
          <td><?php /*echo $this->Form->input('HomeActu.'.$k.'.date_end',array('type'=>'text','class'=>'datepicker','label'=>false,'hiddenField' => false ,'default'=>'sans','disabled'=>true)); */?></td>
           <?php echo $this->Form->hidden('HomeActu.'.$k.'.id_rubr',array('value'=> $adminactu'AdminActu']'catid']));?>
    </tr>
    <?php endforeach;?>

</table>
<?php /*$this->Paginator->options(array(
    'update' => '#content',
    'evalScripts' => true
));*/?>

 <div class="form-actions">
<?php echo $this->Form->submit('Choisir au moins un article',array('class'=>'btn btn-large btn-info','disabled'=>'disabled'));
echo $this->Form->end();?>
<?php
// Shows the next and previous links
/*echo $this->Paginator->prev('Page précédente',array('tag'=>'li','class'=>'previous'),'Page courante', array('tag'=>'li','class'=>'previous'));
echo $this->Paginator->next('Page suivante',array('tag'=>'li', 'class'=>'next'),'Page courante', array('tag'=>'li', 'class'=>'next')); */?>
<ul class="pager">
<?php
echo $this->Paginator->numbers(array('tag'=>'li'));
?>
</ul>

<?php
/* Vérification des requètes sql */
debug($this->params);
echo $this->element('sql_dump');

$this->Js->get('input:checkbox');
$this->Js->event('change', $this->Js->request(
array(
  'action'=>'SessionCheckbox',
  'controller'=>'admin'
  ),
array('async'=>false,
  'method'=>'get',
  'data' => 'checkbox=test')
) 
  );
echo $this->Js->writeBuffer();
echo $this->Session->flash();
 ?>

le controller et vue ou ça ne bug pas

function adminMenu(){

        $this->layout ='admin';

         }

vue vide
sachant que la vue est inséré dans un layout admin

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xtml" xml:lang="fr" lang="fr" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $title_for_layout; ?></title>
<link rel="stylesheet/less" href="<?php echo $this->Html->url('/css/bootstrap.less'); ?>"/>
<?php echo $this->Html->css('jquery-ui'); ?>
<?php echo $this->Html->script('less');?>
<?php echo $this->Html->script('jquery');?>
<?php echo $this->Html->script('jquery-ui'); ?>
<?php echo $this->Html->script('tooltip');?>
<?php echo $this->Html->script('popover');?>
<?php echo $this->Html->script('jquery.ui.datepicker-fr');?>    
</head>
<body>
<div class="container">
        <h3>Administration Intra'air</h3>
<ul class="nav nav-tabs">
    <li
    <?php if ($this->params'action'] == 'adminHome' ){ echo "class='active'";} ;?>><?php echo $this->Html->link('<i class="icon-home"></i> Accueil', array('controller'=>'Admin', 'action' =>'adminHome'),array('escape'=>false)); ?></li>
     <li <?php if ($this->params'action'] == 'adminmenu' ){ echo "class='active'";} ;?>
    ><?php echo $this->Html->link('<i class="icon-list"></i> Gestion Menu', array('controller'=>'Admin', 'action' =>'adminmenu'),array('escape'=>false)); ?>
</li>
    <li 
    <?php if ($this->params'action'] == 'adminactus' ){ echo "class='active'";} ;?>
    ><?php echo $this->Html->link('<i class="icon-folder-open"></i> Slider "à la une"', array('controller'=>'Admin', 'action' =>'adminactus'),array('escape'=>false)); ?>
</li>
        <li <?php if ($this->params'action'] == 'adminfocus' ){ echo "class='active'";} ;?>
    ><?php echo $this->Html->link('<i class="icon-flag"></i>Zone Focus', array('controller'=>'Admin', 'action' =>'adminfocus'),array('escape'=>false)); ?></li>
        <li><a href="http://">Fil multimédia</a></li>

        <li><a href="http://">Newsletter</a></li>
        <li><a href="http://">Statistiques</a></li>

</ul>
<div id="content">
<?php echo $this->fetch('content') ; ?>
</div>
</div>
</body>
<?php echo $this->fetch('script') ; ?>
<script type="text/javascript">

function countChecked(){
  var n = $('input[type=checkbox]:checked').length;

          if(n><?php echo $nbr_actus;?> )
          {

            $('.submit input[type="submit"]').addClass('btn-warning').attr('disabled','disabled').val('Retirer un article - Limite <?php echo $nbr_actus;?>');
            alert('Vous ne pouvez pas sélectionner plus d \'articles la configuration est au maximum de <?php echo $nbr_actus;?>');
          }
          else
          {
              if(n==0)
              {
                 $('.submit input[type="submit"]').addClass('btn-info').attr('disabled','disabled').val('Choisir au moins un article');
              }
              else
              {
               $('.submit input[type="submit"]').removeClass('btn-info').addClass('btn-primary').removeAttr('disabled').val('Enregistrer le choix d\'articles');
               }
          }
}
</script>
<?php echo $this->Html->script('main'); ?>
</html>

10 réponses


xam1311
Auteur
Réponse acceptée

bon j'ai trouvé la solution accrochez vous :P
le fichier model=> il faut prendre le contenu le copier dans un fichier texte .txt type notepad++ l'encoder UTF8.
recréer un fichier ctp au nom du modèle (ici le souci se situait sur HomeActu) et copier les éléments du fichier texte dedans
changer le nom et mettre le nom du fichier tout en minuscule (j'ai fait cette manipulation aussi mais je pense pas que ça soit le fond du souci)
donc souci d'encodage ahma...

Bon déjà petit précision, tu me demande si j'ai deux minute pour t'aider mais sur l'irc tu ne répond pas a met question donc c'est toi qui ma l'air occupé.
De plus je trouve ton code assez complexe donc pas facile décrypté tout sa.
Je vois aussi que ton doctype est en strict, essaie de le remplacé par "<!DOCTYPE html>' on sait jamais sa pourrai fonctionner.

xam1311
Auteur

le doctype html 5 ne change rien au bug.

Bon pas facile a trouver

Cette partie la:

/* Listing de toutes les actus de la catégorie A la Une et pagination*/

   $adminactus = $this->paginate('AdminActu');

   /* Renvoi à la vue des actus */

   $this->set('adminactus',$adminactus);

   if(isset($this->params'requested']))
         {
         return $adminactus = $this->paginate('AdminActu');
        $this->set('adminactus',$adminactus);
         }
         $adminactus = $this->paginate('AdminActu');
         $this->set('adminactus',$adminactus);

Tu fait 2-3 fois la même chose

xam1311
Auteur

à savoir que même en vidant la vue qui bug (le ctp quoi) ,j'ai toujours mon décalage et mon insertion dans mon html :/
ce qui laisse penser au controller...

En vidant la le vue layout ou bien la vue de l'action ?

xam1311
Auteur

la vue action et si je prends la vue défaut le bug reste toujours (je retire $this->layout='admin';)

A ouai ok la tu me pose une colle je sais plus trop quoi proposé :/

xam1311
Auteur

ok au jeu des commentaires j'ai isolé ou se trouvait le souci si je décommente une seule des ces $this->set j'ai le bug qui réapparait..

/**
  * Gestion Articles Administration Pour slider Portail Intra-air
  **/

   /*Lecture de la base de données actu_air Pour récup choix articles */

     /*Renvoi à la vue des articles auparavant sélectionnés */
   /* $this->set('actuschoisi', $this->HomeActu->find('all',array(
      'fields'=>array('HomeActu.id','HomeActu.id_actu','HomeActu.date_end','HomeActu.title_actu','HomeActu.id_rubr'),
      'order'=>'HomeActu.id_actu ASC',
      'conditions'=>array('HomeActu.id_rubr'=>7)
      )));*/
   /*$this->set('CatId',7);
    /*Comptage du nombre d'articles sélectionnés pour les messages informations */
   /* $this->set('total',$this->HomeActu->find('count',array(
                                'conditions'=>array('HomeActu.id_rubr'=>7)
                                )
    ));

    /* Listing de toutes les actus de la catégorie A la Une et pagination*/
   /* $adminactus = $this->paginate('AdminActu');
    /* Renvoi à la vue des actus */
  /* $this->set('adminactus',$adminactus);*/

/*
   if(isset($this->params'requested']))
          {
          return $adminactus = $this->paginate('AdminActu');
         $this->set('adminactus',$adminactus);
          }
          $adminactus = $this->paginate('AdminActu');
          $this->set('adminactus',$adminactus);*/

Par contre pourquoi .... ?? et comment résoudre :/