Компоненты формы являются обертками аналогичных HTML-элементов; им можно передавать все необходимые атрибуты.
Компонент Form предназначен для создания форм.
<x-moonshine::form raw>
</x-moonshine::form>
<x-moonshine::form raw>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw>
// элементы формы
</x-moonshine::form>
Компонент создает html
разметку для будущей формы.
<form
class="form" method="POST"
x-id="['form']"
:id="$id('form')"
>
<input type="hidden" name="_token" value="huwre3xs9N9k82ThhkGVVfzWuf0L6heHRnEAogHD" autocomplete="off">
</form>
<form
class="form" method="POST"
x-id="['form']"
:id="$id('form')"
>
<input type="hidden" name="_token" value="huwre3xs9N9k82ThhkGVVfzWuf0L6heHRnEAogHD" autocomplete="off">
// элементы формы
</form>
<form
class="form" method="POST"
x-id="['form']"
:id="$id('form')"
>
<input type="hidden" name="_token" value="huwre3xs9N9k82ThhkGVVfzWuf0L6heHRnEAogHD" autocomplete="off">
// элементы формы
</form>
<form
class="form" method="POST"
x-id="['form']"
:id="$id('form')"
>
<input type="hidden" name="_token" value="huwre3xs9N9k82ThhkGVVfzWuf0L6heHRnEAogHD" autocomplete="off">
// элементы формы
</form>
<form
class="form" method="POST"
x-id="['form']"
:id="$id('form')"
>
<input type="hidden" name="_token" value="huwre3xs9N9k82ThhkGVVfzWuf0L6heHRnEAogHD" autocomplete="off">
// элементы формы
</form>
Кнопки
Компонент Form позволяет размещать кнопки в отдельном блоке. Для этого нужно передать их в слот buttons
.
<x-moonshine::form>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-slot:buttons>
<x-moonshine::form.button type="reset">Cancel</x-moonshine::form.button>
<x-moonshine::form.button class="btn-primary">Submit</x-moonshine::form.button>
</x-slot:buttons>
</x-moonshine::form>
<x-moonshine::form>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-slot:buttons>
<x-moonshine::form.button type="reset">Cancel</x-moonshine::form.button>
<x-moonshine::form.button class="btn-primary">Submit</x-moonshine::form.button>
</x-slot:buttons>
</x-moonshine::form>
<x-moonshine::form>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-slot:buttons>
<x-moonshine::form.button type="reset">Cancel</x-moonshine::form.button>
<x-moonshine::form.button class="btn-primary">Submit</x-moonshine::form.button>
</x-slot:buttons>
</x-moonshine::form>
<x-moonshine::form>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-slot:buttons>
<x-moonshine::form.button type="reset">Cancel</x-moonshine::form.button>
<x-moonshine::form.button class="btn-primary">Submit</x-moonshine::form.button>
</x-slot:buttons>
</x-moonshine::form>
<x-moonshine::form>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-slot:buttons>
<x-moonshine::form.button type="reset">Cancel</x-moonshine::form.button>
<x-moonshine::form.button class="btn-primary">Submit</x-moonshine::form.button>
</x-slot:buttons>
</x-moonshine::form>
Ошибки
Параметр errors
позволяет отображать список ошибок.
<x-moonshine::form raw error>
</x-moonshine::form>
<x-moonshine::form raw error>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error>
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error>
// элементы формы
</x-moonshine::form>
Если на странице несколько форм, рекомендуется задать name
форме, чтобы отображать ошибки только для конкретной формы.
<x-moonshine::form raw error name="my-form">
</x-moonshine::form>
<x-moonshine::form raw error name="my-form">
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error name="my-form">
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error name="my-form">
// элементы формы
</x-moonshine::form>
<x-moonshine::form raw error name="my-form">
// элементы формы
</x-moonshine::form>
Предварительное распознавание
Параметр precognitive
позволяет включить режим Precognition для формы.
<x-moonshine::form precognitive>
</x-moonshine::form>
<x-moonshine::form precognitive>
// элементы формы
</x-moonshine::form>
<x-moonshine::form precognitive>
// элементы формы
</x-moonshine::form>
<x-moonshine::form precognitive>
// элементы формы
</x-moonshine::form>
<x-moonshine::form precognitive>
// элементы формы
</x-moonshine::form>
<x-moonshine::form.label name="slug">
Slug
</x-moonshine::form.label>
<x-moonshine::form.label name="slug">
Slug
</x-moonshine::form.label>
<x-moonshine::form.label name="slug">
Slug
</x-moonshine::form.label>
<x-moonshine::form.label name="slug">
Slug
</x-moonshine::form.label>
<x-moonshine::form.label name="slug">
Slug
</x-moonshine::form.label>
Если поле обязательно, можно передать атрибут required
для стилизации элемента.
<x-moonshine::form.label name="title" required>
Title
</x-moonshine::form.label>
<x-moonshine::form.label name="title" required>
Title
</x-moonshine::form.label>
<x-moonshine::form.label name="title" required>
Title
</x-moonshine::form.label>
<x-moonshine::form.label name="title" required>
Title
</x-moonshine::form.label>
<x-moonshine::form.label name="title" required>
Title
</x-moonshine::form.label>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-moonshine::form.input
name="title"
placeholder="Title"
value=""
/>
<x-moonshine::form.label>
<x-moonshine::form.input
name="property[]"
type="checkbox"
value="1"
/>
Property 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="property[]"
type="checkbox"
value="1"
/>
Property 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="property[]"
type="checkbox"
value="1"
/>
Property 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="property[]"
type="checkbox"
value="1"
/>
Property 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="property[]"
type="checkbox"
value="1"
/>
Property 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="variant"
type="radio"
value="1"
/>
Variant 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="variant"
type="radio"
value="1"
/>
Variant 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="variant"
type="radio"
value="1"
/>
Variant 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="variant"
type="radio"
value="1"
/>
Variant 1
</x-moonshine::form.label>
<x-moonshine::form.label>
<x-moonshine::form.input
name="variant"
type="radio"
value="1"
/>
Variant 1
</x-moonshine::form.label>
<x-moonshine::form.input
name="color"
type="color"
value="#ec4176"
/>
<x-moonshine::form.input
name="color"
type="color"
value="#ec4176"
/>
<x-moonshine::form.input
name="color"
type="color"
value="#ec4176"
/>
<x-moonshine::form.input
name="color"
type="color"
value="#ec4176"
/>
<x-moonshine::form.input
name="color"
type="color"
value="#ec4176"
/>
<x-moonshine::form.button>Click me</x-moonshine::form.button>
<x-moonshine::form.button>Click me</x-moonshine::form.button>
<x-moonshine::form.button>Click me</x-moonshine::form.button>
<x-moonshine::form.button>Click me</x-moonshine::form.button>
<x-moonshine::form.button>Click me</x-moonshine::form.button>
<x-moonshine::form.hint>
{{ fake()->sentence() }}
</x-moonshine::form.hint>
<x-moonshine::form.hint>
{{ fake()->sentence() }}
</x-moonshine::form.hint>
<x-moonshine::form.hint>
{{ fake()->sentence() }}
</x-moonshine::form.hint>
<x-moonshine::form.hint>
{{ fake()->sentence() }}
</x-moonshine::form.hint>
<x-moonshine::form.hint>
{{ fake()->sentence() }}
</x-moonshine::form.hint>
<x-moonshine::form.file name="file" />
<x-moonshine::form.file name="file" />
<x-moonshine::form.file name="file" />
<x-moonshine::form.file name="file" />
<x-moonshine::form.file name="file" />
С помощью компонента можно отобразить ранее загруженные файлы.
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
/>
files
- массив url файлов для вывода
raw
- массив исходных данных (значение, хранящееся в базе данных).
Вы можете передать дополнительные параметры компоненту:
download
- скачивание загруженного файла
removable
- удаление из списка загруженных файлов
imageable
- отображение превью изображения
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
:download="true"
:removable="false"
:imageable="false"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
:download="true"
:removable="false"
:imageable="false"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
:download="true"
:removable="false"
:imageable="false"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
:download="true"
:removable="false"
:imageable="false"
/>
<x-moonshine::form.file
:files="[
'/images/thumb_1.jpg',
'/images/thumb_2.jpg',
'/images/thumb_3.jpg'
]"
:raw="[
'thumb_1.jpg',
'thumb_2.jpg',
'thumb_3.jpg'
]"
name="images[]"
multiple="multiple"
:download="true"
:removable="false"
:imageable="false"
/>
<x-moonshine::form.slide-range
fromName="from"
toName="to"
fromValue="1000"
toValue="9000"
min="0"
max="10000"
/>
<x-moonshine::form.slide-range
fromName="from"
toName="to"
fromValue="1000"
toValue="9000"
min="0"
max="10000"
/>
<x-moonshine::form.slide-range
fromName="from"
toName="to"
fromValue="1000"
toValue="9000"
min="0"
max="10000"
/>
<x-moonshine::form.slide-range
fromName="from"
toName="to"
fromValue="1000"
toValue="9000"
min="0"
max="10000"
/>
<x-moonshine::form.slide-range
fromName="from"
toName="to"
fromValue="1000"
toValue="9000"
min="0"
max="10000"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
value="2"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
value="2"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
value="2"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
value="2"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
value="2"
/>
или через slot:options
<x-moonshine::form.select>
<x-slot:options>
<option value="1">Вариант 1</option>
<option selected value="2">Вариант 2</option>
</x-slot:options>
</x-moonshine::form.select>
<x-moonshine::form.select>
<x-slot:options>
<option value="1">Вариант 1</option>
<option selected value="2">Вариант 2</option>
</x-slot:options>
</x-moonshine::form.select>
<x-moonshine::form.select>
<x-slot:options>
<option value="1">Вариант 1</option>
<option selected value="2">Вариант 2</option>
</x-slot:options>
</x-moonshine::form.select>
<x-moonshine::form.select>
<x-slot:options>
<option value="1">Вариант 1</option>
<option selected value="2">Вариант 2</option>
</x-slot:options>
</x-moonshine::form.select>
<x-moonshine::form.select>
<x-slot:options>
<option value="1">Вариант 1</option>
<option selected value="2">Вариант 2</option>
</x-slot:options>
</x-moonshine::form.select>
Вы можете объединять значения в группы.
<x-moonshine::form.select
:values="[
'Италия' => [
1 => 'Рим',
2 => 'Милан'
],
'Франция' => [
3 => 'Париж',
4 => 'Марсель'
],
]"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
'Италия' => [
1 => 'Рим',
2 => 'Милан'
],
'Франция' => [
3 => 'Париж',
4 => 'Марсель'
],
]"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
'Италия' => [
1 => 'Рим',
2 => 'Милан'
],
'Франция' => [
3 => 'Париж',
4 => 'Марсель'
],
]"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
'Италия' => [
1 => 'Рим',
2 => 'Милан'
],
'Франция' => [
3 => 'Париж',
4 => 'Марсель'
],
]"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
'Италия' => [
1 => 'Рим',
2 => 'Милан'
],
'Франция' => [
3 => 'Париж',
4 => 'Марсель'
],
]"
:searchable="true"
/>
Вы можете передать дополнительные параметры компоненту:
searchable
- поиск по значениям
nullable
- может иметь значение NULL
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
:nullable="true"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
:nullable="true"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
:nullable="true"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
:nullable="true"
:searchable="true"
/>
<x-moonshine::form.select
:values="[
1 => 'Вариант 1',
2 => 'Вариант 2'
]"
:nullable="true"
:searchable="true"
/>
Для асинхронной загрузки значений необходимо указать url для атрибута asyncRoute
, который вернет данные в формате json.
<x-moonshine::form.select asyncRoute='url' />
<x-moonshine::form.select asyncRoute='url' />
<x-moonshine::form.select asyncRoute='url' />
<x-moonshine::form.select asyncRoute='url' />
<x-moonshine::form.select asyncRoute='url' />
<x-moonshine::form.switcher
:onValue="true"
:offValue="false"
checked="checked"
/>
<x-moonshine::form.switcher
:onValue="true"
:offValue="false"
checked="checked"
/>
<x-moonshine::form.switcher
:onValue="true"
:offValue="false"
checked="checked"
/>
<x-moonshine::form.switcher
:onValue="true"
:offValue="false"
checked="checked"
/>
<x-moonshine::form.switcher
:onValue="true"
:offValue="false"
checked="checked"
/>
onValue
- активное значение
offValue
- неактивное значение
<x-moonshine::form.textarea>
{{ fake()->text() }}
</x-moonshine::form.textarea>
<x-moonshine::form.textarea>
{{ fake()->text() }}
</x-moonshine::form.textarea>
<x-moonshine::form.textarea>
{{ fake()->text() }}
</x-moonshine::form.textarea>
<x-moonshine::form.textarea>
{{ fake()->text() }}
</x-moonshine::form.textarea>
<x-moonshine::form.textarea>
{{ fake()->text() }}
</x-moonshine::form.textarea>