Skip to content

Commit 1afcfd2

Browse files
committed
Merge pull request #16 from koriym/on-failure-method
On failure method suffix
2 parents ba957db + 142eb88 commit 1afcfd2

6 files changed

+23
-14
lines changed

src/OnFailureMethodHandler.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
final class OnFailureMethodHandler implements FailureHandlerInterface
1515
{
16+
const FAILURE_SUFFIX = 'ValidationFailed';
17+
1618
/**
1719
* {@inheritdoc}
1820
*/
@@ -21,10 +23,14 @@ public function handle(AbstractValidation $formValidation, MethodInvocation $inv
2123
unset($form);
2224
$args = (array) $invocation->getArguments();
2325
$object = $invocation->getThis();
24-
if (! $formValidation instanceof FormValidation || ! method_exists($object, $formValidation->onFailure)) {
26+
if (! $formValidation instanceof FormValidation) {
27+
throw new InvalidOnFailureMethod(get_class($invocation->getThis()));
28+
}
29+
$onFailureMethod = $formValidation->onFailure ?: $invocation->getMethod()->getName() . self::FAILURE_SUFFIX;
30+
if (! $formValidation instanceof FormValidation || ! method_exists($object, $onFailureMethod)) {
2531
throw new InvalidOnFailureMethod(get_class($invocation->getThis()));
2632
}
2733

28-
return call_user_func_array([$invocation->getThis(), $formValidation->onFailure], $args);
34+
return call_user_func_array([$invocation->getThis(), $onFailureMethod], $args);
2935
}
3036
}

tests/Fake/FakeController.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,28 @@ class FakeController
1111
/**
1212
* @var FormInterface
1313
*/
14-
protected $form1;
14+
protected $form;
1515

1616
/**
1717
* @Inject
1818
* @Named("contact_form")
1919
*/
2020
public function setForm(FormInterface $form)
2121
{
22-
$this->form1 = $form;
22+
$this->form = $form;
2323
}
2424

2525
/**
26-
* @FormValidation(form="form1", onFailure="badRequestAction")
26+
* @FormValidation
27+
*
28+
* = is same as @ FormValidation(form="form", onFailure="createActionValidationFailed")
2729
*/
2830
public function createAction($name)
2931
{
3032
return '201';
3133
}
3234

33-
public function badRequestAction()
35+
public function createActionValidationFailed()
3436
{
3537
return '400';
3638
}

tests/Fake/FakeControllerVndError.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Ray\Di\Di\Inject;
66
use Ray\Di\Di\Named;
7-
use Ray\WebFormModule\Annotation\FormValidation;
7+
use Ray\WebFormModule\Annotation\InputValidation;
88
use Ray\WebFormModule\Annotation\VndError;
99

1010
class FakeControllerVndError
@@ -24,10 +24,11 @@ public function setForm(FormInterface $form)
2424
}
2525

2626
/**
27-
* @FormValidation(form="form1", onFailure="badRequestAction")
27+
* @InputValidation(form="form1")
2828
* @VndError(
2929
* message="foo validation failed",
30-
* logref="a1000", path="/path/to/error",
30+
* logref="a1000",
31+
* path="/path/to/error",
3132
* href={"_self"="/path/to/error", "help"="/path/to/help"}
3233
* )
3334
*/

tests/Fake/FakeInputValidationController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ class FakeInputValidationController
1111
/**
1212
* @var FormInterface
1313
*/
14-
protected $form1;
14+
protected $form;
1515

1616
/**
1717
* @Inject
1818
* @Named("contact_form")
1919
*/
2020
public function setForm(FormInterface $form)
2121
{
22-
$this->form1 = $form;
22+
$this->form = $form;
2323
}
2424

2525
/**
26-
* @InputValidation(form="form1")
26+
* @InputValidation
2727
*/
2828
public function createAction($name)
2929
{

tests/Fake/FakeInvalidController2.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class FakeInvalidController2
99
private $form = null;
1010

1111
/**
12-
* @FormValidation(form="form")
12+
* @FormValidation
1313
*/
1414
public function createAction()
1515
{

tests/Fake/FakeInvalidInstanceController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class FakeInvalidInstanceController
99
private $form;
1010

1111
/**
12-
* @FormValidation(form="form")
12+
* @FormValidation
1313
*/
1414
public function createAction()
1515
{

0 commit comments

Comments
 (0)