ágil tutorial symfony2 español descargar desarrollo con php symfony1 symfony

php - tutorial - ¿Cuál es el equivalente de Symfony2 de los componentes en Symfony1?



symfony vs laravel (2)

En mi aplicación Symfony2, quiero tener un widget mostrado en varias páginas. Esto no puede ser definido simplemente por su plantilla, debe llamar al DB y pasar por el controlador.

En Symfony1, crearía un componente y lo incluiría. ¿Cómo puedo hacer lo mismo en Symfony2?


Investigué un poco más, y la forma más sencilla que encontré fue esta simple línea en la plantilla:

{% render ''MyBundle:MyController:myAction'' %}

Esto genera el resultado de la acción, con la plantilla especificada por la acción.


Puede crear Twig Extension con el widget función y registrarlo en el contenedor. También inyectar Kernel en esta extensión.

class WidgetFactoryExtension extends /Twig_Extension { protected $kernel; public function __construct($kernel) { $this->kernel= $kernel; } public function getFunctions() { return array( ''widget'' => new /Twig_Function_Method($this, ''createWidget'', array(''is_safe'' => array(''html''))), ); } public function createWidget($name, array $options = array()) { list($bundle, $widget) = explode('':'', $name); $widgetClass = $this->kernel->getBundle($bundle)->getNamespace() . ''//Widget//' . $widget; $widgetObj = new $widgetClass(); $widgetObj->setContainer($this->kernel->getContainer()); if ($options) { $widgetObj->setOptions($options); } return $widgetObj; } }

Y después de esto escribe en plantillas:

{{ widget(''QuestionsBundle:LastAnswers'', {''answersCount'' : 10}) }} {# class QuestionsBundle/Widget/LastAnswers #}