Saltar al contenido

Yii2 MatchHeight ListView

MatchHeight ListView

¿Qué es MatchHeight ListView para yii2?

Es una extensión del widget MatchHeight  de yii2 que implementa el plugin Jquery MatchHeight.js. MatchHeight ListView permite que los elementos de un lista tengan todos las misma altura.

Instalación

Para realizar la instalación mediante composer:

Ejecutando:

php composer.phar require --prefer-dist nerburish/yii2-match-height-view "dev-master"

O también añadiendo la siguiente línea en la sección “requiere” del archivo composer.json

"nerburish/yii2-match-height-view": "dev-master"

Uso

El uso es similar al widget ListView de yii2

Sólo se necesita un dataProvider y preparar la vista del modelo.

En el parámetro clientOptions se pueden pasar las opciones del plugin MatchHeight.js para modificar su comportamiento original. Puedes consultar las opciones disponibles aquí: (https://github.com/liabru/jquery-match-height#options)

Mediante el parámetro “cssFile” se puede añadir la ruta de un archivo css para darle estilo al widget.

Ejemplo

Tenemos el modelo de ejemplo MyModel:

class MyModel extends \yii\base\Model
{
	public $id;
	
	public $title;
	
	public $description;
}

Seguidamente en el template del elemento item.php tenemos lo siguiente:

<h3><?= $model->title ?></h3>
<p><?= $model->description ?></p>

Finalmente, en la vista añadimos el widget:

<?php echo \nerburish\matchheight\MatchHeightView::widget([
	'dataProvider' => $dataProvider,
	'itemView' => '_item',
	'cssFile' => [
		"@web/css/grid-demo.css"		
	]
]) ?>

A continación, el css usado para la demo:

/* ---- grid ---- */
.grid {
  box-sizing: border-box;
}

/* clearfix */
.grid:after {
  content: '';
  display: block;
  clear: both;
}

/* ---- grid-item ---- */
.grid-item {
  width: 24%;
  padding: 10px;
  margin: 0.5%;
  float: left;
  background: #e4e4e4;
  border-radius: 5px;
}