¿Existe alguna forma que dentro de twig se pueda declarar un acumulador? <code>{{ suma += objeto.edad }} </code>

Pregunta de la clase:
Templates con Twig
Alejandro González Reyes

Alejandro González Reyes

Pregunta
studenthace 6 años

¿Existe alguna forma que dentro de twig se pueda declarar un acumulador?

{{ suma += objeto.edad }}

3 respuestas
para escribir tu comentario
    Alejandro González Reyes

    Alejandro González Reyes

    studenthace 6 años

    Lo logre…

    Mi solución es la siguiente

    Este es mi Modelo Jobs

    <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; /** * Esta clase hereda de la clase Model de ELoquent * En esta sección vamos a trabajar con un ORM para hacer las consultas a la base * de datos */ class Job extends Model { private static $sumaMeses = 0; private $limiteMeses = 30; protected $table = "jobs"; public $timestamps = false; /*public function __construct($title = "N/D", $description = "Descripción del puesto no disponible") { $nuevoTitulo = "<strong>Job: </strong>" . $title; parent::__construct($nuevoTitulo, $description); }*/ public function getTiempoLaboral() { $num_anios = intdiv($this->months, 12); $num_meses = $this->months % 12; $leyenda = ''; $bandera_y = false; if($num_anios > 0) { $bandera_y = true; if($num_anios > 1) $leyenda = "$num_anios años"; else $leyenda = "$num_anios año"; } if($num_meses > 0) { if($num_meses > 1) $leyenda .= $bandera_y ? " y $num_meses meses" : "$num_meses meses"; else $leyenda .= $bandera_y ? " y $num_meses mes" : "$num_meses mes"; } return 'Experiencia laboral: ' . $leyenda; } public function imprimirDetalles() { self::$sumaMeses += $this->months; if(self::$sumaMeses > $this->limiteMeses) { return; } if($this->getAttribute('visible')) { echo "<li class='work-position'>"; echo "<h5>{$this->title}</h5>"; echo "<p>". $this->description ."</p>"; echo "<p>". $this->getTiempoLaboral() ."</p>"; echo "<strong>Achievements:</strong>"; echo "</li>"; } } }``` Y en la vista lo imprimo asi

    <div>

    <h3 class=“border-bottom-gray” >Work Experience</h3>

    <ul>

    {% for job in jobs %}

    {{ job.imprimirDetalles() }}

    {% endfor %}

    </ul>

    </div>

    Alejandro González Reyes

    Alejandro González Reyes

    studenthace 6 años

    si la edad le corresponde a cada objeto, y la suma la obtengo por cada edad de objeto iterado. ¿Corrigeme, será necesario una propiedad estática para que no cambie su valor?

    Hector Benitez

    Hector Benitez

    teacherhace 6 años

    El objetivo de usar twig es no tener lógica dentro de la vista, yo te recomiendo que envies al template el valor de la suma como una variable mas.

Curso de Introducción a PHP 2018

Curso de Introducción a PHP 2018

Domina PHP 7, un lenguaje de código abierto que es rápido, flexible y práctico. Conoce cómo crear desde tu blog personal hasta sitios populares de Internet en este Curso de Introducción a PHP.

Curso de Introducción a PHP 2018
Curso de Introducción a PHP 2018

Curso de Introducción a PHP 2018

Domina PHP 7, un lenguaje de código abierto que es rápido, flexible y práctico. Conoce cómo crear desde tu blog personal hasta sitios populares de Internet en este Curso de Introducción a PHP.