Bonjour, je débute avec cake et je pense avoir un couflit entre le routage cakephp et un script jquery de transition de page en fadein/out. Il semblait être résolut ya 2 jours mais il est revenu. l'inspecteur montre qu'à chaque chargement, la vue est appelée 2 fois : une qui se charge bien et une qui ne se charge pas, elle bloque à 0KB pas de statut pas d'ardesse distante.
conséquence : 2 fois sur 3 la page s'affiche au bout de 5 sec(mais ça tourne toujours dans l'inspecteur) et 1 fois sur 3 ça bloque complètement le fadein. sachant que dans tous les cas, si j'intéromp le chargement depuis le navigateur ma page s'affiche.
ça se passe sur toutes les pages à chaque lien, chaque changement de vue.
le script est sur le layout default.ctp
<?= $this->Html->scriptStart(); ?>
$(document).ready(function() {
$(".transition-panel").css("display", "none");
$(".transition-panel").fadeIn(1500);
$("a.transition").click(function(event){
event.preventDefault();
linkLocation = this.href;
$(".transition-panel").fadeOut(1000, function(){window.location = linkLocation;});
});
});
<?= $this->Html->scriptEnd(); ?>
le srcipt est appelé par ces liens :
<?=$this->Html->link(
$v['name'],
$v['link'],
array('class' => 'transition')); ?>
et dans routes.php
Router::connect('/', array('controller' => 'pages', 'action' => 'home'));
Router::connect('/page/:slug',array('controller'=>'pages','action'=>'index'),array('pass'=>array('slug'),'slug'=>'[a-z0-9/-]+'));
Router::connect('/connect', array('controller' => 'users', 'action' => 'login'));
et ma page index.ctp qui charge les templates.ctp de chaque pages
<?php
$page= current($page);
$template =$page['Post']['content'];
echo $this->Html->meta('description',$page['Post']['name'],array('inline' => false));
echo $this->assign('title',$page['Post']['name'],array('inline' => false));
$this->Html->css($template,array('inline' => false));
$this->extend($template);
?>
Du coup je sais pas si ça vient du script, de cake, de OVH (car ça me fait ça depuis ma migration chez OVH, je suis en php:5.5 et environnement:dev) ça me fait pas ça en interne et ça le faisait pas sur l'encien serveur, je suis perdu...
Merci de votre aide
J'ai trouvé le problème, c'est l'accélérateur du serveur qui ralentissait tout... c'est paradoxale qd même...
Il falait modifier le .ovhconfig pour désactiver l'accélérateur, et rajouter une commande dans le .htaccess de mon site:
.ovhconfig
app.engine=phpcgi
app.engine.version=AUTO
http.firewall=none
environment=development
.htaccess
SetEnv PHP_VER 5_5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
voila ça c'est fait, j'espère que ça pourra aider ceux qui rencontreront ce problème
merci Blinkers et Lartak pour votre temps et votre aide.
Bonsoir.
Si ça ne te le faisait pas avant de le mettre sur ton serveur OVH et que ça te le fait que dessus, il paraît logique que le problème vienne du serveur.
Hello,
Pourtant ton code est bon, tu annule bien le chargement classique de la vue avec "event.preventDefault();".
Donc pour moi c'est tout bon.
Envoi le lien si jamais je regarde si ca me le fait aussi et ce qui cloche.
Effectivement, très bizzare ce problème.
Je ne vois vraiment pas d'où ca peut venir et pourtant j'ai cherché un moment.
Fait un test en appelant la page en ajax sans rien en faire (juste pour tester), regarde si il fait plusieurs appel comme ici.
je test avec l'ajax, mais ça me génère un premier problème de chargement de css :
mon controller 'page' gère une dixaine de pages (façon template) qui possèdent chacune leur .ctp et leur .css propre, appelés par la vue Pages/index.ctp
<?php
//debug($page['Post']['content']);
$page= current($page);
$template =$page['Post']['content'];
//debug($template);
echo $this->Html->meta('description',$page['Post']['name'],array('inline' => false));
echo $this->assign('title',$page['Post']['name'],array('inline' => false));
$this->Html->css($template,array('inline' => false));
$this->extend($template);
?>
pour le lien ajax j'appelle un js qui contient ceci :
$(document).on("click", ".transition", function (event){
event.preventDefault();
$.get($(this).attr('href'), {}, function(data){
$(".transition-panel").fadeOut(1000, function(){
$('#container').empty().append(data);
$(".transition-panel").fadeIn(1000);
});
});
return false;
});
la vue ctp se charge mais pas sa css, on dirait que la vue-'template' se charge mais pas l'index.ctp, j'aimerai résoudre ça avant d'aller plus loin
up, je pense que l'ajax c'est pas la solution, au contraire, ça génère d'autre problèmes. ça fait 8 jours que je plante, please help