add 'inline_form_validation' option to validate inline forms with custom algo
This commit is contained in:
parent
212afe2775
commit
8d5de79192
|
@ -139,6 +139,7 @@ abstract class CrudController extends AdminController
|
||||||
|
|
||||||
$builder = $this->createFormBuilder($entity);
|
$builder = $this->createFormBuilder($entity);
|
||||||
$callback = $configuration->getFields($context)[$label]['options']['inline_form'] ?? null;
|
$callback = $configuration->getFields($context)[$label]['options']['inline_form'] ?? null;
|
||||||
|
$validationCallback = $configuration->getFields($context)[$label]['options']['inline_form_validation'] ?? null;
|
||||||
|
|
||||||
if (null === $callback) {
|
if (null === $callback) {
|
||||||
throw $this->createNotFoundException();
|
throw $this->createNotFoundException();
|
||||||
|
@ -169,12 +170,21 @@ abstract class CrudController extends AdminController
|
||||||
);
|
);
|
||||||
|
|
||||||
$form->handleRequest($fakeRequest);
|
$form->handleRequest($fakeRequest);
|
||||||
|
|
||||||
|
if (null !== $validationCallback) {
|
||||||
|
call_user_func_array($validationCallback, [$entity, $form, $request]);
|
||||||
|
}
|
||||||
|
|
||||||
$session->remove($lastRequestId);
|
$session->remove($lastRequestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->isMethod('POST')) {
|
if ($request->isMethod('POST')) {
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
if (null !== $validationCallback) {
|
||||||
|
call_user_func_array($validationCallback, [$entity, $form, $request]);
|
||||||
|
}
|
||||||
|
|
||||||
if ($form->isValid()) {
|
if ($form->isValid()) {
|
||||||
if (null !== $beforeUpdate) {
|
if (null !== $beforeUpdate) {
|
||||||
call_user_func_array($beforeUpdate, [$entity, $form, $request]);
|
call_user_func_array($beforeUpdate, [$entity, $form, $request]);
|
||||||
|
|
|
@ -37,6 +37,7 @@ abstract class Field
|
||||||
'href_attr' => [],
|
'href_attr' => [],
|
||||||
'attr' => [],
|
'attr' => [],
|
||||||
'inline_form' => null,
|
'inline_form' => null,
|
||||||
|
'inline_form_validation' => null,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$resolver->setRequired('view');
|
$resolver->setRequired('view');
|
||||||
|
@ -46,6 +47,7 @@ abstract class Field
|
||||||
$resolver->setAllowedTypes('attr', 'array');
|
$resolver->setAllowedTypes('attr', 'array');
|
||||||
$resolver->setAllowedTypes('href', ['null', 'string', 'callable']);
|
$resolver->setAllowedTypes('href', ['null', 'string', 'callable']);
|
||||||
$resolver->setAllowedTypes('inline_form', ['null', 'callable']);
|
$resolver->setAllowedTypes('inline_form', ['null', 'callable']);
|
||||||
|
$resolver->setAllowedTypes('inline_form_validation', ['null', 'callable']);
|
||||||
$resolver->setAllowedTypes('href_attr', ['array', 'callable']);
|
$resolver->setAllowedTypes('href_attr', ['array', 'callable']);
|
||||||
$resolver->setAllowedTypes('raw', 'boolean');
|
$resolver->setAllowedTypes('raw', 'boolean');
|
||||||
$resolver->setAllowedTypes('property_builder', ['null', 'callable']);
|
$resolver->setAllowedTypes('property_builder', ['null', 'callable']);
|
||||||
|
|
Loading…
Reference in a new issue