View on GitLab

Checks and Radios

x-larastrap::check is used for a single checkbox, but many other variants are available.

<x-larastrap::check label="A Classic Checkbox" />
<div class="row mb-3">
  <label for="check-960ed0691aafac6893918abf4e65d347" class="col-4 col-form-label">A Classic Checkbox</label>
  <div class="col-8">
    <div class="form-check mt-1">
      <input id="check-960ed0691aafac6893918abf4e65d347" type="checkbox" class="form-check-input" name="usFOll0BfN">
    </div>
  </div>
</div>

switch

Adding the switch parameter to a single x-larastrap::check element, it will be presented as a Bootstrap switch.

<x-larastrap::check switch label="A Switch" />
<div class="row mb-3">
  <label for="check-013e7ccb1d9e0c7e74a009e6e183af0b" class="col-4 col-form-label">A Switch</label>
  <div class="col-8">
    <div class="form-check form-switch mt-1">
      <input id="check-013e7ccb1d9e0c7e74a009e6e183af0b" type="checkbox" class="form-check-input" name="MGfRe2oqxZ">
    </div>
  </div>
</div>

inline

The inline parameter is useful to alter the layout of the checkbox component.

By default x-larastrap::check is handled as any other Input element (the position of label and input are determined by the parent Form formview ), while inline groups the label with the actual checkbox for a more classic visualization.

Horizontal form, non-inline checkbox

Vertical form, non-inline checkbox

Horizontal form, inline checkbox

Horizontal form, inline checkbox aligned to the beginning

Vertical form, inline checkbox
<x-larastrap::form formview="horizontal">
    <div class="alert alert-info">Horizontal form, non-inline checkbox</div>
    <x-larastrap::text label="Reference Text" />
    <x-larastrap::check label="Non-Inline Check" />
</x-larastrap::form>

<hr>

<x-larastrap::form formview="vertical">
    <div class="alert alert-info">Vertical form, non-inline checkbox</div>
    <x-larastrap::text label="Reference Text" />
    <x-larastrap::check label="Non-Inline Check" />
</x-larastrap::form>

<hr>

<x-larastrap::form formview="horizontal">
    <div class="alert alert-info">Horizontal form, inline checkbox</div>
    <x-larastrap::text label="Reference Text" />
    <x-larastrap::check label="Inline Check" inline />
</x-larastrap::form>

<hr>

<x-larastrap::form formview="horizontal">
    <div class="alert alert-info">Horizontal form, inline checkbox aligned to the beginning</div>
    <x-larastrap::text label="Reference Text" />
    <x-larastrap::check label="Inline Check" inline do_label="hide" />
</x-larastrap::form>

<hr>

<x-larastrap::form formview="vertical">
    <div class="alert alert-info">Vertical form, inline checkbox</div>
    <x-larastrap::text label="Reference Text" />
    <x-larastrap::check label="Inline Check" inline />
</x-larastrap::form>
<form id="form-6f4922f45568161a8cdf4ad2299f6d23" class="" method="post" name="form-6f4922f45568161a8cdf4ad2299f6d23">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="alert alert-info">
    Horizontal form, non-inline checkbox
  </div>
  <div class="row mb-3">
    <label for="input-2e1cc4accbf13adb0a8ad3ce1912c9f8" class="col-4 col-form-label">Reference Text</label>
    <div class="col-8">
      <input id="input-2e1cc4accbf13adb0a8ad3ce1912c9f8" type="text" class="form-control" name="FTa558wih9" value="">
    </div>
  </div>
  <div class="row mb-3">
    <label for="check-5bb4929c0073a4d01950df437f7808c8" class="col-4 col-form-label">Non-Inline Check</label>
    <div class="col-8">
      <div class="form-check mt-1">
        <input id="check-5bb4929c0073a4d01950df437f7808c8" type="checkbox" class="form-check-input" name="6MDJSo8C5z">
      </div>
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-222102cb808243971bd4c33dd2a51752" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>
<hr>
<form id="form-4e732ced3463d06de0ca9a15b6153677" class="" method="post" name="form-4e732ced3463d06de0ca9a15b6153677">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="alert alert-info">
    Vertical form, non-inline checkbox
  </div>
  <div class="mb-3">
    <label for="input-0c6928d0eaf67643a72b069047ac0816" class="form-label">Reference Text</label> <input id="input-0c6928d0eaf67643a72b069047ac0816" type="text" class="form-control" name="qFSTI8Xc9g" value="">
  </div>
  <div class="mb-3">
    <label for="check-5efc64ff3ce1d38851a9817e76214591" class="form-label">Non-Inline Check</label>
    <div class="form-check mt-1">
      <input id="check-5efc64ff3ce1d38851a9817e76214591" type="checkbox" class="form-check-input" name="Jisq7WWSx9">
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-ad6f1229433e02e545b9b598df61ed42" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>
<hr>
<form id="form-e369853df766fa44e1ed0ff613f563bd" class="" method="post" name="form-e369853df766fa44e1ed0ff613f563bd">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="alert alert-info">
    Horizontal form, inline checkbox
  </div>
  <div class="row mb-3">
    <label for="input-42979af871a76af5832513e92eec0da7" class="col-4 col-form-label">Reference Text</label>
    <div class="col-8">
      <input id="input-42979af871a76af5832513e92eec0da7" type="text" class="form-control" name="oLP2bOMpeO" value="">
    </div>
  </div>
  <div class="row mb-3">
    <div class="col-8">
      <div class="form-check mt-1">
        <input id="check-8228aae519895cec37c7111d37733cb9" type="checkbox" class="form-check-input" name="Me7NiTRoPp"> <label for="check-8228aae519895cec37c7111d37733cb9" class="">Inline Check</label>
      </div>
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-802f32930e5aff0e56f8bb90be191387" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>
<hr>
<form id="form-17e62166fc8586dfa4d1bc0e1742c08b" class="" method="post" name="form-17e62166fc8586dfa4d1bc0e1742c08b">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="alert alert-info">
    Horizontal form, inline checkbox aligned to the beginning
  </div>
  <div class="row mb-3">
    <label for="input-9150c3e87197612f44b21167ccf3b1db" class="col-4 col-form-label">Reference Text</label>
    <div class="col-8">
      <input id="input-9150c3e87197612f44b21167ccf3b1db" type="text" class="form-control" name="vs3Ss0IrlN" value="">
    </div>
  </div>
  <div class="row mb-3">
    <div class="col-8">
      <div class="form-check mt-1">
        <input id="check-32875bf6a2dc3f7e4dd005dc081398cd" type="checkbox" class="form-check-input" name="uI26k4V5On"> <label for="check-32875bf6a2dc3f7e4dd005dc081398cd" class="">Inline Check</label>
      </div>
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-cb220d667c9086fc1146cfac55d4637c" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>
<hr>
<form id="form-2838023a778dfaecdc212708f721b788" class="" method="post" name="form-2838023a778dfaecdc212708f721b788">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="alert alert-info">
    Vertical form, inline checkbox
  </div>
  <div class="mb-3">
    <label for="input-16b35e176f220d5d2b78cb5ccbf911df" class="form-label">Reference Text</label> <input id="input-16b35e176f220d5d2b78cb5ccbf911df" type="text" class="form-control" name="o03vj5l2Jq" value="">
  </div>
  <div class="mb-3">
    <div class="form-check mt-1">
      <input id="check-018926ca08d69ddabc6e0340e8f3d656" type="checkbox" class="form-check-input" name="y43aEEFaBz"> <label for="check-018926ca08d69ddabc6e0340e8f3d656" class="">Inline Check</label>
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-b10d50b908b0ae004b8dde654b090a60" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>

As per any other Larastrap parameter, for all elements, if you want to use the inline layout by default you can enforce it once in your configuration file.

<?php

return [
    'elements' => [
        'check' => [
            'inline' => true,
        ],
    ],
];

options

x-larastrap::checks and x-larastrap::radios act as a single input field, but are actually a collection of organized items. Each item is an "option", enumerated into the options parameter.

@php

$options = ['red' => 'Red', 'green' => 'Green', 'blue' => 'Blue'];

@endphp

<x-larastrap::checks label="Choose Many" :options="$options" />
<x-larastrap::radios label="Choose One" :options="$options" />
<div class="row mb-3">
  <label for="checks-7345bdc22c7b8c6ea44004ae065889e7" class="col-4 col-form-label">Choose Many</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="checkbox" class="btn-check" name="[]" id="checks-7345bdc22c7b8c6ea44004ae065889e7-ee38e4d5dd68c4e440825018d549cb47" autocomplete="off" value="red"> <label class="btn btn-outline-primary" for="checks-7345bdc22c7b8c6ea44004ae065889e7-ee38e4d5dd68c4e440825018d549cb47">Red</label> <input type="checkbox" class="btn-check" name="[]" id="checks-7345bdc22c7b8c6ea44004ae065889e7-d382816a3cbeed082c9e216e7392eed1" autocomplete="off" value="green"> <label class="btn btn-outline-primary" for="checks-7345bdc22c7b8c6ea44004ae065889e7-d382816a3cbeed082c9e216e7392eed1">Green</label> <input type="checkbox" class="btn-check" name="[]" id="checks-7345bdc22c7b8c6ea44004ae065889e7-9594eec95be70e7b1710f730fdda33d9" autocomplete="off" value="blue"> <label class="btn btn-outline-primary" for="checks-7345bdc22c7b8c6ea44004ae065889e7-9594eec95be70e7b1710f730fdda33d9">Blue</label>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="radios-7416e4a6cef96118fde13ed82b1cdbca" class="col-4 col-form-label">Choose One</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="radio" class="btn-check" name="Zk8IaamwW2" id="radios-7416e4a6cef96118fde13ed82b1cdbca-ee38e4d5dd68c4e440825018d549cb47" autocomplete="off" value="red"> <label class="btn btn-outline-primary" for="radios-7416e4a6cef96118fde13ed82b1cdbca-ee38e4d5dd68c4e440825018d549cb47">Red</label> <input type="radio" class="btn-check" name="Zk8IaamwW2" id="radios-7416e4a6cef96118fde13ed82b1cdbca-d382816a3cbeed082c9e216e7392eed1" autocomplete="off" value="green"> <label class="btn btn-outline-primary" for="radios-7416e4a6cef96118fde13ed82b1cdbca-d382816a3cbeed082c9e216e7392eed1">Green</label> <input type="radio" class="btn-check" name="Zk8IaamwW2" id="radios-7416e4a6cef96118fde13ed82b1cdbca-9594eec95be70e7b1710f730fdda33d9" autocomplete="off" value="blue"> <label class="btn btn-outline-primary" for="radios-7416e4a6cef96118fde13ed82b1cdbca-9594eec95be70e7b1710f730fdda33d9">Blue</label>
    </div>
  </div>
</div>

options can be a simple associative array where keys are the HTML values and values are the related labels. But each value in the options can also be an object, holding a few attributes to better describe each item. Among them:

  • label - the label to display
  • label_html - alternative to label, to enforce an HTML content
  • tlabel - alternative to label, contains an identifier for native translations
  • id - an optional ID to identify the option in the DOM. Please note: if you specify an ID, it is up to you to grant it is unique within the current page
  • disabled - set true if the option is not selectable
  • hidden - set true to skip rendering of the label but still keep the option within the page. This can be useful to handle some extra option through Javascript
  • button_classes - CSS classes to be added to the button
  • button_attributes - associative array of HTML attributes to be assigned to the button
@php

$options = [
    'first' => (object) [
        'label' => 'First',
        // This is intentionally broken, as the radio button will change the
        // checkbox having the same ID (as the $options array is here used to
        // init both components)
        // Be aware of IDs you assign!
        'id' => 'first',
    ],
    'second' => (object) [
        'label' => 'Second',
        'disabled' => true,
    ],
    'third' => (object) [
        'label' => 'Third',
        'button_attributes' => ['data-bs-toggle' => 'tooltip', 'data-bs-title' => 'Sample tooltip'],
    ],
    'fourth' => (object) [
        'label' => 'Fourth',
        'hidden' => true,
    ],
    'fifth' => (object) [
        'label' => 'Fifth',
        'button_classes' => ['text-white', 'btn-danger'],
    ],
    'sixth' => (object) [
        'label_html' => '<s>Sixth</s>',
    ],
];

@endphp

<x-larastrap::checks label="Choose Many" :options="$options" />
<x-larastrap::radios label="Choose One" :options="$options" />
<div class="row mb-3">
  <label for="checks-2381618853985a128be2aae88bddfaef" class="col-4 col-form-label">Choose Many</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="checkbox" class="btn-check" name="[]" id="first" autocomplete="off" value="first"> <label class="btn btn-outline-primary" for="first">First</label> <input type="checkbox" class="btn-check" name="[]" id="checks-2381618853985a128be2aae88bddfaef-c22cf8376b1893dcfcef0649fe1a7d87" autocomplete="off" value="second"> <label class="btn btn-outline-primary disabled" for="checks-2381618853985a128be2aae88bddfaef-c22cf8376b1893dcfcef0649fe1a7d87">Second</label> <input type="checkbox" class="btn-check" name="[]" id="checks-2381618853985a128be2aae88bddfaef-168909c0b6f1dfbd48f679d47059c1d6" autocomplete="off" value="third"> <label class="btn btn-outline-primary" for="checks-2381618853985a128be2aae88bddfaef-168909c0b6f1dfbd48f679d47059c1d6" data-bs-toggle="tooltip" data-bs-title="Sample tooltip">Third</label> <input type="checkbox" class="btn-check" name="[]" id="checks-2381618853985a128be2aae88bddfaef-6e599f7a2a9186d391be4537f105be98" autocomplete="off" value="fourth"> <input type="checkbox" class="btn-check" name="[]" id="checks-2381618853985a128be2aae88bddfaef-0abdfd715970bd0ef7d5574daa0e6d0b" autocomplete="off" value="fifth"> <label class="btn btn-outline-primary text-white btn-danger" for="checks-2381618853985a128be2aae88bddfaef-0abdfd715970bd0ef7d5574daa0e6d0b">Fifth</label> <input type="checkbox" class="btn-check" name="[]" id="checks-2381618853985a128be2aae88bddfaef-04748e061c66b41433e6aa521c542811" autocomplete="off" value="sixth"> <label class="btn btn-outline-primary" for="checks-2381618853985a128be2aae88bddfaef-04748e061c66b41433e6aa521c542811"><s>Sixth</s></label>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="radios-d41b6a6ca7cf1a70dff9b31c85dbf369" class="col-4 col-form-label">Choose One</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="radio" class="btn-check" name="FDvsxMg9n5" id="first" autocomplete="off" value="first"> <label class="btn btn-outline-primary" for="first">First</label> <input type="radio" class="btn-check" name="FDvsxMg9n5" id="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-c22cf8376b1893dcfcef0649fe1a7d87" autocomplete="off" value="second"> <label class="btn btn-outline-primary disabled" for="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-c22cf8376b1893dcfcef0649fe1a7d87">Second</label> <input type="radio" class="btn-check" name="FDvsxMg9n5" id="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-168909c0b6f1dfbd48f679d47059c1d6" autocomplete="off" value="third"> <label class="btn btn-outline-primary" for="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-168909c0b6f1dfbd48f679d47059c1d6" data-bs-toggle="tooltip" data-bs-title="Sample tooltip">Third</label> <input type="radio" class="btn-check" name="FDvsxMg9n5" id="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-6e599f7a2a9186d391be4537f105be98" autocomplete="off" value="fourth"> <input type="radio" class="btn-check" name="FDvsxMg9n5" id="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-0abdfd715970bd0ef7d5574daa0e6d0b" autocomplete="off" value="fifth"> <label class="btn btn-outline-primary text-white btn-danger" for="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-0abdfd715970bd0ef7d5574daa0e6d0b">Fifth</label> <input type="radio" class="btn-check" name="FDvsxMg9n5" id="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-04748e061c66b41433e6aa521c542811" autocomplete="off" value="sixth"> <label class="btn btn-outline-primary" for="radios-d41b6a6ca7cf1a70dff9b31c85dbf369-04748e061c66b41433e6aa521c542811"><s>Sixth</s></label>
    </div>
  </div>
</div>

As Lists

x-larastrap::checklist and x-larastrap::radiolist are alternative components, where options are rappresented as horizontal rows instead of a x-larastrap::btngroup .

@php

$options = ['red' => 'Red', 'green' => 'Green', 'blue' => 'Blue'];

@endphp

<x-larastrap::radiolist label="Choose One" :options="$options" />
<x-larastrap::checklist label="Choose Many" :options="$options" />
<div class="row mb-3">
  <label for="radiolist-00ffba43325a2a2fc5f739184617a202" class="col-4 col-form-label">Choose One</label>
  <div class="col-8">
    <div class="form-control-plaintext">
      <div class="form-check">
        <input class="form-check-input" type="radio" name="MxJZkUo6zr" id="radiolist-00ffba43325a2a2fc5f739184617a202-ee38e4d5dd68c4e440825018d549cb47" value="red"> <label class="form-check-label" for="radiolist-00ffba43325a2a2fc5f739184617a202-ee38e4d5dd68c4e440825018d549cb47">Red</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="MxJZkUo6zr" id="radiolist-00ffba43325a2a2fc5f739184617a202-d382816a3cbeed082c9e216e7392eed1" value="green"> <label class="form-check-label" for="radiolist-00ffba43325a2a2fc5f739184617a202-d382816a3cbeed082c9e216e7392eed1">Green</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="MxJZkUo6zr" id="radiolist-00ffba43325a2a2fc5f739184617a202-9594eec95be70e7b1710f730fdda33d9" value="blue"> <label class="form-check-label" for="radiolist-00ffba43325a2a2fc5f739184617a202-9594eec95be70e7b1710f730fdda33d9">Blue</label>
      </div>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="checklist-6471fa3997cc03e9d820ad23527aee87" class="col-4 col-form-label">Choose Many</label>
  <div class="col-8">
    <div class="form-control-plaintext">
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-6471fa3997cc03e9d820ad23527aee87-ee38e4d5dd68c4e440825018d549cb47" value="red"> <label class="form-check-label" for="checklist-6471fa3997cc03e9d820ad23527aee87-ee38e4d5dd68c4e440825018d549cb47">Red</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-6471fa3997cc03e9d820ad23527aee87-d382816a3cbeed082c9e216e7392eed1" value="green"> <label class="form-check-label" for="checklist-6471fa3997cc03e9d820ad23527aee87-d382816a3cbeed082c9e216e7392eed1">Green</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-6471fa3997cc03e9d820ad23527aee87-9594eec95be70e7b1710f730fdda33d9" value="blue"> <label class="form-check-label" for="checklist-6471fa3997cc03e9d820ad23527aee87-9594eec95be70e7b1710f730fdda33d9">Blue</label>
      </div>
    </div>
  </div>
</div>

With Models

Other variants permit to use objects (eventually: Eloquent models) as options within a checks list or radio buttons set. Those are

  • x-larastrap::checks-model
  • x-larastrap::radios-model
  • x-larastrap::checklist-model
  • x-larastrap::radiolist-model
@php

$users = App\Models\User::inRandomOrder()->take(3)->get();

@endphp

<x-larastrap::radios-model label="Select a User" :options="$users" />
<x-larastrap::checks-model label="Select Many Users" :options="$users" />
<x-larastrap::radiolist-model label="Select a User" :options="$users" />
<x-larastrap::checklist-model label="Select Many Users" :options="$users" />
<div class="row mb-3">
  <label for="radios-36acd5eb323bea7587904c44add03ae3" class="col-4 col-form-label">Select a User</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="radio" class="btn-check" name="kK394PIXjw" id="radios-36acd5eb323bea7587904c44add03ae3-d3d3570e50c3a7b56579c72c44c3bd8c" autocomplete="off" value="7"> <label class="btn btn-outline-primary" for="radios-36acd5eb323bea7587904c44add03ae3-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label> <input type="radio" class="btn-check" name="kK394PIXjw" id="radios-36acd5eb323bea7587904c44add03ae3-4f0c0cbead6ae07c8be71951fc29d12e" autocomplete="off" value="8"> <label class="btn btn-outline-primary" for="radios-36acd5eb323bea7587904c44add03ae3-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label> <input type="radio" class="btn-check" name="kK394PIXjw" id="radios-36acd5eb323bea7587904c44add03ae3-1bb08e28e93bfd7b7ad823611325d50d" autocomplete="off" value="2"> <label class="btn btn-outline-primary" for="radios-36acd5eb323bea7587904c44add03ae3-1bb08e28e93bfd7b7ad823611325d50d">Ebba Olson I</label>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="checks-6b36c6bade7f2e802619b517000b7aec" class="col-4 col-form-label">Select Many Users</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="checkbox" class="btn-check" name="[]" id="checks-6b36c6bade7f2e802619b517000b7aec-d3d3570e50c3a7b56579c72c44c3bd8c" autocomplete="off" value="7"> <label class="btn btn-outline-primary" for="checks-6b36c6bade7f2e802619b517000b7aec-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label> <input type="checkbox" class="btn-check" name="[]" id="checks-6b36c6bade7f2e802619b517000b7aec-4f0c0cbead6ae07c8be71951fc29d12e" autocomplete="off" value="8"> <label class="btn btn-outline-primary" for="checks-6b36c6bade7f2e802619b517000b7aec-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label> <input type="checkbox" class="btn-check" name="[]" id="checks-6b36c6bade7f2e802619b517000b7aec-1bb08e28e93bfd7b7ad823611325d50d" autocomplete="off" value="2"> <label class="btn btn-outline-primary" for="checks-6b36c6bade7f2e802619b517000b7aec-1bb08e28e93bfd7b7ad823611325d50d">Ebba Olson I</label>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="radiolist-dd9de9199f3349098026377ad9165e0e" class="col-4 col-form-label">Select a User</label>
  <div class="col-8">
    <div class="form-control-plaintext">
      <div class="form-check">
        <input class="form-check-input" type="radio" name="uNhDxOj76F" id="radiolist-dd9de9199f3349098026377ad9165e0e-d3d3570e50c3a7b56579c72c44c3bd8c" value="7"> <label class="form-check-label" for="radiolist-dd9de9199f3349098026377ad9165e0e-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="uNhDxOj76F" id="radiolist-dd9de9199f3349098026377ad9165e0e-4f0c0cbead6ae07c8be71951fc29d12e" value="8"> <label class="form-check-label" for="radiolist-dd9de9199f3349098026377ad9165e0e-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="uNhDxOj76F" id="radiolist-dd9de9199f3349098026377ad9165e0e-1bb08e28e93bfd7b7ad823611325d50d" value="2"> <label class="form-check-label" for="radiolist-dd9de9199f3349098026377ad9165e0e-1bb08e28e93bfd7b7ad823611325d50d">Ebba Olson I</label>
      </div>
    </div>
  </div>
</div>
<div class="row mb-3">
  <label for="checklist-1f56e01e50d8c6525fe32bb7025fa202" class="col-4 col-form-label">Select Many Users</label>
  <div class="col-8">
    <div class="form-control-plaintext">
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-1f56e01e50d8c6525fe32bb7025fa202-d3d3570e50c3a7b56579c72c44c3bd8c" value="7"> <label class="form-check-label" for="checklist-1f56e01e50d8c6525fe32bb7025fa202-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-1f56e01e50d8c6525fe32bb7025fa202-4f0c0cbead6ae07c8be71951fc29d12e" value="8"> <label class="form-check-label" for="checklist-1f56e01e50d8c6525fe32bb7025fa202-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="checkbox" name="[]" id="checklist-1f56e01e50d8c6525fe32bb7025fa202-1bb08e28e93bfd7b7ad823611325d50d" value="2"> <label class="form-check-label" for="checklist-1f56e01e50d8c6525fe32bb7025fa202-1bb08e28e93bfd7b7ad823611325d50d">Ebba Olson I</label>
      </div>
    </div>
  </div>
</div>

The -model variants are able to set their own value accordingly to the Eloquent relationships of the reference entity (the one assigned as obj of the parent x-larastrap::form ), as long as their name matches the attribute to which the relationship itself is exposed.

@php

// In this example, the User model has a "boss" relationship defined as
//
// public function boss()
// {
//     return $this->belongsTo(User::class);
// }
//
// and a "friends" relationship defined as
//
// public function friends()
// {
//     return $this->belongsToMany(User::class);
// }

$ref = App\Models\User::has('boss')->inRandomOrder()->first();
$bosses = App\Models\User::doesntHave('boss')->orderBy('name', 'asc')->get();
$users = App\Models\User::orderBy('name', 'asc')->get();

@endphp

<x-larastrap::form :obj="$ref">
    <x-larastrap::radios-model name="boss" :label="sprintf('Select a Boss for %s', $ref->name)" :options="$bosses" />
    <x-larastrap::checklist-model name="friends" :label="sprintf('Select friends of %s', $ref->name)" :options="$users" />
</x-larastrap::form>
<form id="form-a0a080f42e6f13b3a2df133f073095dd" class="" method="post" name="form-a0a080f42e6f13b3a2df133f073095dd">
  <input type="hidden" name="_token" value="A4SPDJN1A4tAdj8MXQNrWp7M3t4kTJdZSaM7JatJ" autocomplete="off">
  <div class="row mb-3">
    <label for="radios-3eab0dfff5bc0780903aaff6bd6d32a9" class="col-4 col-form-label">Select a Boss for Jules Wunsch</label>
    <div class="col-8">
      <div class="btn-group" role="group">
        <input type="radio" class="btn-check" name="boss" id="radios-3eab0dfff5bc0780903aaff6bd6d32a9-d3d3570e50c3a7b56579c72c44c3bd8c" autocomplete="off" value="7"> <label class="btn btn-outline-primary" for="radios-3eab0dfff5bc0780903aaff6bd6d32a9-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label> <input type="radio" class="btn-check" name="boss" id="radios-3eab0dfff5bc0780903aaff6bd6d32a9-1669d9a0bc26b289ae113d7621d70c9b" autocomplete="off" value="9"> <label class="btn btn-outline-primary" for="radios-3eab0dfff5bc0780903aaff6bd6d32a9-1669d9a0bc26b289ae113d7621d70c9b">Erica Krajcik</label> <input type="radio" class="btn-check" name="boss" id="radios-3eab0dfff5bc0780903aaff6bd6d32a9-4f0c0cbead6ae07c8be71951fc29d12e" autocomplete="off" value="8"> <label class="btn btn-outline-primary" for="radios-3eab0dfff5bc0780903aaff6bd6d32a9-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label> <input type="radio" class="btn-check" name="boss" id="radios-3eab0dfff5bc0780903aaff6bd6d32a9-631e06390b23157fab1c3cce98e4b9d9" autocomplete="off" value="6" checked> <label class="btn btn-outline-primary" for="radios-3eab0dfff5bc0780903aaff6bd6d32a9-631e06390b23157fab1c3cce98e4b9d9">Prof. Elmo Rosenbaum</label> <input type="radio" class="btn-check" name="boss" id="radios-3eab0dfff5bc0780903aaff6bd6d32a9-d5ffd3be773ccd80ad616da04e9f8016" autocomplete="off" value="10"> <label class="btn btn-outline-primary" for="radios-3eab0dfff5bc0780903aaff6bd6d32a9-d5ffd3be773ccd80ad616da04e9f8016">Shany Bosco</label>
      </div>
    </div>
  </div>
  <div class="row mb-3">
    <label for="checklist-d143107b0ffe150b61d33c60ae87cf3e" class="col-4 col-form-label">Select friends of Jules Wunsch</label>
    <div class="col-8">
      <div class="form-control-plaintext">
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-1bb08e28e93bfd7b7ad823611325d50d" value="2"> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-1bb08e28e93bfd7b7ad823611325d50d">Ebba Olson I</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-9d31a793d380387c12b3dc978b819a7b" value="5"> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-9d31a793d380387c12b3dc978b819a7b">Edwina Hettinger</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-d3d3570e50c3a7b56579c72c44c3bd8c" value="7" checked> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-d3d3570e50c3a7b56579c72c44c3bd8c">Eliezer Luettgen</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-1669d9a0bc26b289ae113d7621d70c9b" value="9" checked> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-1669d9a0bc26b289ae113d7621d70c9b">Erica Krajcik</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-0a2a1c575a4e367b62bf138c10549edd" value="4" checked> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-0a2a1c575a4e367b62bf138c10549edd">Geraldine Abshire IV</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-4f0c0cbead6ae07c8be71951fc29d12e" value="8"> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-4f0c0cbead6ae07c8be71951fc29d12e">Gerard McGlynn</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-2492875cb979dac7a20a4b6834f1f28e" value="3" checked> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-2492875cb979dac7a20a4b6834f1f28e">Jessyca Goyette</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-66096f75ef0bcff89ac90afc09cc0810" value="1"> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-66096f75ef0bcff89ac90afc09cc0810">Jules Wunsch</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-631e06390b23157fab1c3cce98e4b9d9" value="6" checked> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-631e06390b23157fab1c3cce98e4b9d9">Prof. Elmo Rosenbaum</label>
        </div>
        <div class="form-check">
          <input class="form-check-input" type="checkbox" name="friends[]" id="checklist-d143107b0ffe150b61d33c60ae87cf3e-d5ffd3be773ccd80ad616da04e9f8016" value="10"> <label class="form-check-label" for="checklist-d143107b0ffe150b61d33c60ae87cf3e-d5ffd3be773ccd80ad616da04e9f8016">Shany Bosco</label>
        </div>
      </div>
    </div>
  </div>
  <div class="col-12 text-end">
    <button id="button-8032d31d7a6b551268caa5e27257cb5b" class="btn btn-primary" type="submit">Save</button>
  </div>
</form>

For -model variants it is assumed that models into the options collection have an "id" and a "name" attribute to be used (respectively: as the value and the label of each item).

If your models have a different structure, or you want to display different labels, it is possible to pass a translateCallback parameter with a function to translate your actual content: it has to accept a parameter (the model to be translated) and must return an array with two elements (the value and the label of the final selectable option).

@php

$users = App\Models\User::inRandomOrder()->take(3)->get();
$translate = fn($obj) => [$obj->id, $obj->email];

@endphp

<x-larastrap::radiolist-model label="Select a User" :options="$users" :translateCallback="$translate" />
<div class="row mb-3">
  <label for="radiolist-0aafa1e350d9456c5d1fc039ed3118bb" class="col-4 col-form-label">Select a User</label>
  <div class="col-8">
    <div class="form-control-plaintext">
      <div class="form-check">
        <input class="form-check-input" type="radio" name="WtfJ48HVAc" id="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-697016028c49e3fdf0083fd32cce75af" value="10"> <label class="form-check-label" for="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-697016028c49e3fdf0083fd32cce75af">kasandra.zboncak@example.com</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="WtfJ48HVAc" id="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-90745ad2b373887d3a6130127383664a" value="9"> <label class="form-check-label" for="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-90745ad2b373887d3a6130127383664a">genevieve.reinger@example.com</label>
      </div>
      <div class="form-check">
        <input class="form-check-input" type="radio" name="WtfJ48HVAc" id="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-2a89fc7d9b9fce0d461bb5e47221b066" value="1"> <label class="form-check-label" for="radiolist-0aafa1e350d9456c5d1fc039ed3118bb-2a89fc7d9b9fce0d461bb5e47221b066">daniel.arlie@example.net</label>
      </div>
    </div>
  </div>
</div>

The -model variants have also an extra_options parameter to define other options aside those collected in the options . This is useful to add a "void" item to be choosen by the user.

@php

$users = App\Models\User::inRandomOrder()->take(3)->get();

@endphp

<x-larastrap::radios-model label="Select a User" :options="$users" :extra_options="[0 => 'None']" value="0" />
<div class="row mb-3">
  <label for="radios-2bbee93b91416dc4cdbf07be40ba8216" class="col-4 col-form-label">Select a User</label>
  <div class="col-8">
    <div class="btn-group" role="group">
      <input type="radio" class="btn-check" name="VY9I3Iz8kb" id="radios-2bbee93b91416dc4cdbf07be40ba8216-6adf97f83acf6453d4a6a4b1070f3754" autocomplete="off" value="0" checked> <label class="btn btn-outline-primary" for="radios-2bbee93b91416dc4cdbf07be40ba8216-6adf97f83acf6453d4a6a4b1070f3754">None</label> <input type="radio" class="btn-check" name="VY9I3Iz8kb" id="radios-2bbee93b91416dc4cdbf07be40ba8216-0a2a1c575a4e367b62bf138c10549edd" autocomplete="off" value="4"> <label class="btn btn-outline-primary" for="radios-2bbee93b91416dc4cdbf07be40ba8216-0a2a1c575a4e367b62bf138c10549edd">Geraldine Abshire IV</label> <input type="radio" class="btn-check" name="VY9I3Iz8kb" id="radios-2bbee93b91416dc4cdbf07be40ba8216-631e06390b23157fab1c3cce98e4b9d9" autocomplete="off" value="6"> <label class="btn btn-outline-primary" for="radios-2bbee93b91416dc4cdbf07be40ba8216-631e06390b23157fab1c3cce98e4b9d9">Prof. Elmo Rosenbaum</label> <input type="radio" class="btn-check" name="VY9I3Iz8kb" id="radios-2bbee93b91416dc4cdbf07be40ba8216-1669d9a0bc26b289ae113d7621d70c9b" autocomplete="off" value="9"> <label class="btn btn-outline-primary" for="radios-2bbee93b91416dc4cdbf07be40ba8216-1669d9a0bc26b289ae113d7621d70c9b">Erica Krajcik</label>
    </div>
  </div>
</div>