THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Pour développer/débugguer, j'ai édité core/lib/Thelia/Controller/BaseController.php:generateRedirect($url, $status = 302) pour rajouter ceci:

// core/lib/Thelia/Controller/BaseController.php
protected function generateRedirect($url, $status = 302)
{
  if (is_debug())
  {
      die('DEBUG: cancel redirect: <a href="'.$url.'">'.$url.'</a>');
  }
}

Avez vous une méthode pour obtenir le même effet sans modifier le core ?

Et question subsidiaire, comment puis-je savoir depuis ce code (donc dans BaseController) si je suis en mode debug ou pas ? j'ai écrit moi même la fonction is_debug() dans mon code, car je n'ai pas trouvé de moyen de retrouver le 2eme paramètre passé à new Thelia($env, $debug)

Last edited by Asenar (18-12-2015 11:11:54)


Michaël Marinetti
arrive à Thélia doucement mais surement.
@Asenar

Offline


Dans BaseController.php, tu as

/**
 * Check if environment is in debug mode
 *
 * @return bool
 */
protected function isDebug()
{
    return $this->container->getParameter('kernel.debug');
}

Offline


Desproges wrote:

Avez vous une méthode pour obtenir le même effet sans modifier le core ?

Tout dépend du pourquoi tu fais ça, mais si c'est pour un module, pourquoi ne pas surcharger la fonction dans le controller de ton module

Last edited by informatiqueprog (18-12-2015 09:11:20)

Offline


Il y a sans doute un event du kernel que tu peux intercepter, et dont tu peux stopper la propagation pour afficher ta réponse.


OpenStudio Toulouse

Offline


Ah je vais essayer de chercher du coté de ce que dit ROADSTER31 smile

Merci pour le isDebug, je l'avais manqué ! Et en fait il est aussi disponible dans $thelia (qui extends Symfony/httpKernel/Kernel ), ce qui m'arrange encore plus!

Non ce n'est pas (particulièrement) pour un module, c'est pour faire une pause à l'arrêt du traitement pour pouvoir observer ce qui s'est passé (que ce soit avec des "echo" sauvage dans le code pendant du dev, ou plutôt FirePHP ).

En fait (pour reformuler), j'aimerai une page de redirection intermédiaire un peu comme sur le forum, uniquement en mode debug (que je pourrais même activer plus tard coté prod pour mon ip par exemple).

J'ai regardé du coté de kernel->terminate() mais elle est difficilement surchargeable depuis la classe Thelia à cause des arguments (et en plus de toute façon la réponse est envoyée avant !).

Je viens de trouver une solution qui me convient "pour l'instant", qui est de modifier index_dev.php ainsi:

if ($allowed)
{
  $response = $thelia->handle($request)->prepare($request);
  if ($response->isRedirect() && $thelia->isDebug())
  {
    $target_url = $response->getTargetUrl();
    echo '[DEBUG MODE]: redirect: <a href="'.$target_url.'">'.$target_url.'</a>';
  }
  else
  {
    $response->send();
  }
  $thelia->terminate($request, $response);
}

Michaël Marinetti
arrive à Thélia doucement mais surement.
@Asenar

Offline


Il faut arrêter de penser en terme de surcharge. Le modèle événementiel permet de s'affranchir de cette notion.


OpenStudio Toulouse