composer require razorcreations/ajax-field
For Nova 3 support use
composer require razorcreations/[email protected]
// Inside your resources fields definition
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo'),
// If you are using integers or floats for the values ensure to chain on the type methods...
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->typeInt(),
The field expects the response from the AJAX call to respond with a JSON array of options in the following format:
[
{
"label": "Bob",
"value": 1,
},
{
"label": "Jenny",
"value": 2,
}
]
If you wish you can override the default keys of "value" and "label" using the following methods:
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->setValueKey('id')->setLabelKey('name'),
You can pass through another Nova fields value by adding the parent method with the key of the nova field
// Create a parent field
Text::make('Foo', 'foo');
// Create ajax field, with parent method
AjaxField::make('Bar')->setUrl('/api/ajaxselect/foo')->parent('foo'),
This will hit the AjaxUrl with the fields key value pair appended as a get param e.g. /api/ajaxselect/foo?foo=value
Rather than having the options loaded in once on page load, you can use ->responsive() to pass through the field value when the input value changes
AjaxField::make('Foo')->setUrl('/api/ajaxselect/foo')->responsive(),
If you would like to contribute please fork the project and submit a PR.
composer run fix
to fix any PHP linting issues automaticallycomposer run lint
to show any PHP linting issuesnpm run fix
to fix any JS/Vue linting issue automaticallynpm run lint
to show any JS/Vue linting issues