dynamic/silverstripe-collection

Display a filterable collection of pages or dataobjects on a page.

Installs: 12 884

Dependents: 2

Suggesters: 0

Security: 0

Stars: 4

Watchers: 8

Forks: 4

Open Issues: 1

Type:silverstripe-vendormodule

3.0.0-beta1 2023-10-30 21:57 UTC

README

Display a filterable collection of pages or dataobjects on a page.

Build Status Scrutinizer Code Quality Code Coverage Build Status codecov

Latest Stable Version Total Downloads Latest Unstable Version License

Requirements

  • SilverStripe 4.x

Installation

composer require dynamic/silverstripe-collection

Configuration

In your config.yml:

Your/Namespace/ExamplePageController:
  managed_object: ExampleObject
  page_size: 10
  extensions:
    - Dynamic\Collection\CollectionExtension

Managed Page/DataObject

Collection will create a search form based on the managed object's $searchable_fields.

private static $searchable_fields = [
  'Title' => [
    'title' => 'Name',
  ],
  'Category.ID' => [
    'title' => 'Category',
  ],
];

For advanced setups, you can also create getCustomSearchContext() on your managed object.

To include a sorting dropdown field, create a getSortOptions() method on your managed object:

public function getSortOptions()
{
  return array(
    'Created' => 'Date',
    'Title' => 'Name A-Z',
    'Title DESC' => 'Name Z-A',
  );
}

Templates

$CollectionSearchForm will display the search form.

You have mutliple options to loop through the results in your template:

  • $Collection will display a list of all results
  • $PaginatedList will paginate the results
  • $GroupedList.GroupedBy(CategoryTitle) will display results grouped by the variable you pass

Documentation

See the docs/en folder.