Skip to content

LayoutColumnLayoutElements (Intermediate)

Introduction

After defining a Layout with LayoutRows and LayoutColumns you probably want to add items to the defined LayoutColumns.

The layout system is capable of managing different entity types in one LayoutColumn. Information about LayoutElements that should be displayed on a LayoutColumn is managed by the LayoutColumnLayoutElements intermediate model.

To access information of this intermediate model such as the sort_number, you should make use of the pivot information that will always be returned when including the layoutElements relation described in LayoutColumns or the layoutColumns relation on LayoutElements. You can find the available entity types that can be attached to a LayoutColumn below.

Model & Relations

Namespace

Modules\Layout\Entities\Intermediate\LayoutColumnLayoutElement

Relations

RelationKeyTypeRelation Field(s)
LayoutColumnlayoutColumn Belongs tolayout_column_id
LayoutElementlayoutElementsBelongs tolayout_element_type, layout_element_id

LayoutElement types

Note

LayoutElement types are keys for different entities existing in our system. Every LayoutElement type listed here has itself a relationship to LayoutColumns which can be accessed with the key layoutColumns.

When retrieving such a relation (internally utilizing this intermediate model), there will always be a pivot object attached holding the information described in this section.

You can use the pivot information for sorting and such.

Affected entities are marked with the trait LayoutElement.

Traits

  • Sortable
  • SoftDeletes

Attach

Attaches a LayoutElement to a LayoutColumn and returns all LayoutColumns the given Element is related to after.

Definition

POST /api/layouts/elements/columns/attach

Request Keys

KeyTypeDefaultDescription
layout_element_type *stringnullThe title for the layout
layout_element_id*string-Layoutable type (see above)
layout_column_ids*array-Layoutable ID (see above)
sort_numberintegerCurrent highest +1The index of the LayoutElementLayoutColumn related to the LayoutColumn

Keys with * are required.
Keys with ** are normalized to the information given by the route.

Example Request

php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/attach', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type": "formField",
        'layout_element_id' => 1,
        'layout_column_ids': [1]
    ]
]);

Example Response

json
[
  {
    "id": 1,
    "title": null,
    "layout_row_id": 1,
    "width": 6,
    "sort_number": 1,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 1,
      "layout_element_type": "formField",
      "created_at": "2023-04-17 21:23:07",
      "updated_at": "2023-04-17 21:23:07",
      "id": 2,
      "sort_number": 1
    }
  },
  {
    "id": 2,
    "title": null,
    "layout_row_id": 2,
    "width": 6,
    "sort_number": 2,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 2,
      "layout_element_type": "formField",
      "created_at": "2023-04-28 14:14:04",
      "updated_at": "2023-04-28 14:14:04",
      "id": 104,
      "sort_number": 1
    }
  }
]

Sync

Attaches the given LayoutElement to many LayoutColumns and detaches the element from any LayoutColumn that is not posted.

Definition

POST /api/layouts/elements/columns/sync

KeyTypeDefaultDescription
layout_element_type *stringnullThe title for the layout
layout_element_id*string-Layoutable type (see above)
layout_column_ids*array-Layoutable ID (see above)
sort_numberintegerCurrent highest +1The index of the LayoutElementLayoutColumn related to the LayoutColumn

Example Request

php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/sync', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type": "formField",
        'layout_element_id' => 1,
        'layout_column_ids': [1]
    ]
]);

Example Response

json
[
  {
    "id": 1,
    "title": null,
    "layout_row_id": 1,
    "width": 12,
    "sort_number": 1,
    "created_at": "2021-10-25 19:07:59",
    "updated_at": "2021-10-25 19:07:59",
    "deleted_at": null,
    "pivot": {
      "layout_element_id": 1,
      "layout_column_id": 1,
      "layout_element_type": "formField",
      "created_at": "2023-04-28 14:16:16",
      "updated_at": "2023-04-28 14:16:16",
      "id": 105,
      "sort_number": 5
    }
  }
]

Detach

Detaches a LayoutElement from a LayoutColumn and returns all LayoutColumns the given Element is related to after.

Definition

POST /api/layouts/elements/columns/detach

Request Keys

KeyTypeDefaultDescription
layout_element_type *stringnullThe title for the layout
layout_element_id*string-Layoutable type (see above)
layout_column_ids*array-Layoutable ID (see above)
sort_numberintegerCurrent highest +1The index of the LayoutElementLayoutColumn related to the LayoutColumn

Keys with * are required.
Keys with ** are normalized to the information given by the route.

Example Request

php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/layouts/elements/columns/detach', [
    'headers' => ['Authorization' => "Bearer {accessToken}"],
    'json' => [
        "layout_element_type" => "formField",
        "layout_element_id" => 1,
        "layout_column_ids" => [1]
    ]
]);

Example Response

json
[]