Columnas de imagen
Comprar curso

15. Columnas de imagen

En este tema aprenderás a trabajar con columnas de imágenes utilizando Laravel Livewire Tables. Te mostraremos cómo definir y personalizar tus columnas de imágenes para que se adapten a tus necesidades.


2 comentarios

Inicia sesión para comentar

Comentarios:

  • Jean Gaspar Gracia Gonzalez

    Jean Gaspar Gracia Gonzalez hace 1 año

    porque no dejas es código usando el row?

  • Victor Arana Flores

    Victor Arana Flores hace 1 año

    Las columnas de imagen son una manera fácil de mostrar imágenes en tus tablas utilizando la función ImageColumn::make(), lo que evita tener que crear vistas parciales utilizando format().

    Por ejemplo, si deseas mostrar un avatar de usuario, puedes utilizar el siguiente código:

    ImageColumn::make('Avatar')
        ->location(
            fn($row) => storage_path('app/public/avatars/' . $row->id . '.jpg')
        ),

    También puedes pasar una serie de atributos para aplicar a la etiqueta de la imagen, como clase y texto alternativo, utilizando la función attributes():

    ImageColumn::make('Avatar')
        ->location(
            fn($row) => storage_path('app/public/avatars/' . $row->id . '.jpg')
        )
        ->attributes(fn($row) => [
            'class' => 'rounded-full',
            'alt' => $row->name . ' Avatar',
        ]),

    Esto te permite personalizar aún más la presentación de la imagen en tu tabla, para que se adapte a tus necesidades específicas.

    • Walter Ramos hace 1 año

      El problema capaz surge si tengo el modelo articulos y este tiene asociado imagenes, como hago para atraves de row mostrar la url de la imagen si este dato no esta como columna?

    • Danilo hace 1 año

      Espero te sirva.

      Ejemplo para obtener la imagen de una relación Uno a Uno Polimórfica

      class Brand extends Model
      {	
      	use HasFactory;
      	protected $fillable= ['name','slug'];
      	public function image()
      	{
              return $this->morphOne(Image::class, 'imageable');
          }
      
      }

      En el componente datatable.

      class BrandTable extends DataTableComponent{
      	
      	public function columns(): array
          {	
          	  //Accedemos a la propiedad URL de la relación con image
          	  Column::make("MyImagen", "image.url")
                ->hideIf(true),
                
                //Ya podemos pasar a la vista el valor de la URL 
                //a través la variable $row   
                 Column::make('Image')->label(
                          fn ($row) => 
                          view('admin.brands.tables.image', 
                          ['img' => Storage::url($row->image->url)])
                      )->html(),
          }
          
      	public function builder(): Builder
          {
          	return Brand::query()
          	//Nombre de la relacion
              ->with('image')
              //Nombre de la tabla en la db
              ->where('images.imageable_type', Brand::class);
          }
      }

       En la vista empleada para la columna.

        <img src="{{$img}}">