Skip to content
This repository has been archived by the owner on Sep 28, 2018. It is now read-only.

Commit

Permalink
#1 fixed bug with the required option
Browse files Browse the repository at this point in the history
  • Loading branch information
Philipp Marien committed Oct 6, 2014
1 parent 6515882 commit c55c395
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 40 deletions.
59 changes: 37 additions & 22 deletions Helper/BaseValidator.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@ public function validateConstrains(array $constraints, Parameter $parameter)
try
{
$violationList = $this->validator->validate(
$parameter->getValue(),
$constraints,
array(Constraint::PROPERTY_CONSTRAINT, Constraint::DEFAULT_GROUP)
$parameter->getValue(),
$constraints,
array(Constraint::PROPERTY_CONSTRAINT, Constraint::DEFAULT_GROUP)
);
}
catch (\Exception $e)
Expand All @@ -105,9 +105,11 @@ public function validateConstrains(array $constraints, Parameter $parameter)

if ($violationList->count() > 0)
{
throw new InvalidTransformerParameterException('Key: ' . $parameter->getKey() . ' - ' . 'Value: '
. $violationList->get(0)->getInvalidValue() . ' - Error: '
. $violationList->get(0)->getMessage());
throw new InvalidTransformerParameterException(
'Key: ' . $parameter->getKey() . ' - ' . 'Value: '
. $violationList->get(0)->getInvalidValue() . ' - Error: '
. $violationList->get(0)->getMessage()
);
}
}

Expand All @@ -121,11 +123,13 @@ public function validateConstrains(array $constraints, Parameter $parameter)
*/
protected function handleException(\Exception $e, Parameter $parameter)
{
$violation = new ConstraintViolation($e->getMessage(), $e->getMessage(), array(
$e->getCode(),
$e->getFile(),
$e->getLine()
), $parameter->getValue(), null, $parameter->getValue());
$violation = new ConstraintViolation(
$e->getMessage(), $e->getMessage(), array(
$e->getCode(),
$e->getFile(),
$e->getLine()
), $parameter->getValue(), null, $parameter->getValue()
);

return $violationList = new ConstraintViolationList(array($violation));
}
Expand All @@ -135,21 +139,26 @@ protected function handleException(\Exception $e, Parameter $parameter)
public function requireIfAvailableAnd(Configuration $configuration, array $params)
{
$requiredIfAvailable = $configuration->getOptions()->getRequiredIfAvailable();
foreach ($requiredIfAvailable->getAnd() as $key)
if (is_array($requiredIfAvailable->getAnd()) && count($requiredIfAvailable->getAnd()) > 0)
{
if (!array_key_exists(strtolower($key), $params))
foreach ($requiredIfAvailable->getAnd() as $key)
{
return false;
break;
if (!array_key_exists(strtolower($key), $params))
{
return false;
break;
}
}

return true;
}

return true;
return false;
}



public function requireIfAvailableOR(Configuration $configuration, array $params)
public function requireIfAvailableOr(Configuration $configuration, array $params)
{
$requiredIfAvailable = $configuration->getOptions()->getRequiredIfAvailable();
foreach ($requiredIfAvailable->getOr() as $key)
Expand All @@ -169,16 +178,22 @@ public function requireIfAvailableOR(Configuration $configuration, array $params
public function requireIfNotAvailableAnd(Configuration $configuration, array $params)
{
$requiredIfNotAvailable = $configuration->getOptions()->getRequiredIfNotAvailable();
foreach ($requiredIfNotAvailable->getAnd() as $key)

if (is_array($requiredIfNotAvailable->getAnd()) && count($requiredIfNotAvailable->getAnd()) > 0)
{
if (array_key_exists(strtolower($key), $params))
foreach ($requiredIfNotAvailable->getAnd() as $key)
{
return false;
break;
if (array_key_exists(strtolower($key), $params))
{
return false;
break;
}
}

return true;
}

return true;
return false;
}


Expand Down
32 changes: 14 additions & 18 deletions Helper/Validator.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,30 +76,26 @@ public function validate(Configuration $configuration, Parameter $parameter)
*/
public function requireValue(Configuration $configuration, Parameter $parameter, array $params)
{
$not_null = false;
$constraints = array();

if ($configuration->getOptions()->getRequired() === true)
if ($configuration->getOptions()->getRequired() === false)
{
$not_null = true;
}

$methods = array(
'requireIfAvailableAnd',
'requireIfAvailableOR',
'requireIfNotAvailableAnd',
'requireIfNotAvailableOr'
);
$methods = array(
'requireIfAvailableAnd',
'requireIfAvailableOr',
'requireIfNotAvailableAnd',
'requireIfNotAvailableOr'
);

$i = 1;
$i = 0;

while ($not_null === false && $i < count($methods))
{
$not_null = $this->{$methods[$i - 1]}($configuration, $params);
++$i;
while ($configuration->getOptions()->getRequired() === false && $i < count($methods))
{
$configuration->getOptions()->setRequired($this->{$methods[$i]}($configuration, $params));
++$i;
}
}

if ($not_null === true)
if ($configuration->getOptions()->getRequired() === true)
{
array_push($constraints, new Constraints\NotNull());
if (in_array($configuration->getType(), array(TypeEnum::COLLECTION_TYPE, TypeEnum::OBJECT_TYPE)))
Expand Down

0 comments on commit c55c395

Please sign in to comment.