API Select

Addon by Luke Youell

API Select Main Screenshot

Utilise API endpoints for your Select Fieldtype options.

License

API Select requires a license.

You can purchase one at https://statamic.com/marketplace/addons/api-select

You may use API Select without a license while Statamic is in Trial mode.

Installation

Require it using Composer.

composer require laraluke/statamic-api-select

Publish the assets:

php artisan vendor:publish --provider="Laraluke\ApiSelectFieldtype\ServiceProvider"

Using the API Select Fieldtype

Add the fieldtype to your fieldset/blueprint. You will then need to configure the following settings:

Endpoint Type

This is to define whether or not your endpoint value is a URL or a config variable.

Endpoint

If your endpoint type is a URL your endpoint value will look like this:

https://jsonplaceholder.typicode.com/users

If your endpoint type is a config variable your endpoint value will look like this:

endpoints.users

and your endpoints.php file would look something like this:

return [
    'users' => 'https://jsonplaceholder.typicode.com/users',
];

Cache Duration

This is how long API requests will be cached for in minutes.

Set this value to 0 if you don't want to cache results.

Data Set Key

If your data set isn't in the top-level of your API response you can define it's location using dot syntax.

So if your API result looks like:

{
    "data": {
        "users": []
    }
}

You would set the data set key value to:

data.users

Item Key

Define the unique identifier to be used as the option value.

So if the iteration in your API result looks like this:

{
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "[email protected]",
}

You might set your item key to:

id

Item Label

Define the value to be used as the option label.

So if the iteration in your API result looks like this:

{
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "[email protected]",
}

You might set your item label to:

name

Using the API Select value in your templates

Let's assume your API select field handle is api_select_users API response is like so:

[
    {
        "id": 1,
        "name": "Leanne Graham",
        "username": "Bret",
        "email": "[email protected]",
    },
    {
        "id": 2,
        "name": "Ervin Howell",
        "username": "Antonette",
        "email": "[email protected]",
    }
]

Single-choice API Select

{{ api_select_users.name }}

// Returns
Leanne Graham

Multi-choice API Select

{{ api_select_multi }}
    {{ name }}
{{ /api_select_multi }}

// Returns
Leanne Graham
Ervin Howell