Hoy tocaba reciclar algo de código de un antiguo proyecto en symfony 1.0, para reutilizarlo en otro en symfony 1.2.

Consistía en reciclar un componente que mostraba un menú de navegación, y en función del módulo que se ejecutase marcaba uno de los elementos del menú como “actual”.

En symfony 1.0, la forma de saber qué module se está ejecutando es bien sencilla:

<?php
// actions.class.php
$module = $this->getModuleName()
?>

En cambio, yo no lo estaba utilzando dentro de una clase actions, sino dentro de la clase controller

<?php
// controllers.class.php
$module = $this->getModuleName()
?>

En symfony 1.0, ambos resultados producen el mismo resultado, en cambio, en symfony 1.2, el segundo código devolvería el nombre del módulo donde está alojado ese componte. Para que devuelva el nombre del módulo de la acción que se está ejecutando deberíamos escribir lo siguiente

<?php
// controllers.class.php
$module = $this->getRequest()->getParameter('module');
?>

Personalmente, veo mucho más lógica la forma de hacerlo en symfony 1.2 ya que la variable $this sólo debiera ofrecer información sobre el propio objeto, y no otro de un contexto más amplio.


Compártelo:
  • Print this article!
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Ping.fm
  • RSS
  • Twitter