104 lines
1.8 KiB
Markdown
104 lines
1.8 KiB
Markdown
|
|
# Model form callback
|
||
|
|
|
||
|
|
`model-form` currently has three methods for receiving callback functions:
|
||
|
|
|
||
|
|
```php
|
||
|
|
// callback after form submission
|
||
|
|
$form->submitted(function (Form $form) {
|
||
|
|
//...
|
||
|
|
});
|
||
|
|
|
||
|
|
// callback before save
|
||
|
|
$form->saving(function (Form $form) {
|
||
|
|
//...
|
||
|
|
});
|
||
|
|
|
||
|
|
// callback after save
|
||
|
|
$form->saved(function (Form $form) {
|
||
|
|
//...
|
||
|
|
});
|
||
|
|
|
||
|
|
```
|
||
|
|
If required, you can add additional fields to ignore using the submitted function e.g.
|
||
|
|
```php
|
||
|
|
$form->submitted(function (Form $form) {
|
||
|
|
$form->ignore('username');
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
```
|
||
|
|
The form data that is currently submitted can be retrieved from the callback parameter `$form`:
|
||
|
|
|
||
|
|
```php
|
||
|
|
$form->saving(function (Form $form) {
|
||
|
|
|
||
|
|
dump($form->username);
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
Get data in model
|
||
|
|
```php
|
||
|
|
$form->saved(function (Form $form) {
|
||
|
|
|
||
|
|
$form->model()->id;
|
||
|
|
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
Can redirect other urls by returning an instance of `Symfony\Component\HttpFoundation\Response` directly in the callback:
|
||
|
|
|
||
|
|
```php
|
||
|
|
$form->saving(function (Form $form) {
|
||
|
|
|
||
|
|
// returns a simple response
|
||
|
|
return response('xxxx');
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
$form->saving(function (Form $form) {
|
||
|
|
|
||
|
|
// redirect url
|
||
|
|
return redirect('/admin/users');
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
$form->saving(function (Form $form) {
|
||
|
|
|
||
|
|
// throws an exception
|
||
|
|
throw new \Exception('Error friends. . .');
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
```
|
||
|
|
|
||
|
|
Return error or success information on the page:
|
||
|
|
|
||
|
|
```php
|
||
|
|
use Illuminate\Support\MessageBag;
|
||
|
|
|
||
|
|
// redirect back with an error message
|
||
|
|
$form->saving(function ($form) {
|
||
|
|
|
||
|
|
$error = new MessageBag([
|
||
|
|
'title' => 'title...',
|
||
|
|
'message' => 'message....',
|
||
|
|
]);
|
||
|
|
|
||
|
|
return back()->with(compact('error'));
|
||
|
|
});
|
||
|
|
|
||
|
|
// redirect back with a successful message
|
||
|
|
$form->saving(function ($form) {
|
||
|
|
|
||
|
|
$success = new MessageBag([
|
||
|
|
'title' => 'title...',
|
||
|
|
'message' => 'message....',
|
||
|
|
]);
|
||
|
|
|
||
|
|
return back()->with(compact('success'));
|
||
|
|
});
|
||
|
|
|
||
|
|
```
|