List

Class: Code16\Sharp\Show\Fields\SharpShowListField

This field is very similar to the [../form-fields/list.md](Form's File field), and its purpose is to display items made of other Show fields.

Here's an example, for a list of pictures with a legend:

function buildShowFields()
{
    $this->addField(
        SharpShowListField::make("pictures")
            ->setLabel("additional pictures")
            ->addItemField(
                SharpShowFileField::make("file")
                    ->setStorageDisk("local")
                    ->setStorageBasePath("data/Spaceship/{id}/Pictures")
            )
            ->addItemField(
                SharpShowTextField::make("legend")
                    ->setLabel("Legend")
            )
    );
}

Configuration

setLabel()

Set the field label.

addItemField(SharpShowField $field)

Add a SharpShowField in the item.

Layout

The List item layout must be defined like the show itself, in the buildShowLayout() function. The item layout is managed as a column, with a ShowLayoutColumn object. To link the column and the item, use the classic withSingleField() function with a second argument, a Closure accepting a ShowLayoutColumn.

Example:

$this->addColumn(6, function(ShowLayoutColumn $column) {
     $column->withSingleField("pieces", function(ShowLayoutColumn $listItem) {
          $listItem->withSingleField("acquisition_date")
              ->withSingleField("title")
              ->withSingleField("artist");
     });
 });

Formatter

The Formatter expects an array or a Collection of models, each one defining attributes for each list item keys at the format expected by the corresponding Field Formatter.

Last Updated:
Contributors: philippe