PHPackages                             pandora-una/pandora-valida-dependencia - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. pandora-una/pandora-valida-dependencia

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

pandora-una/pandora-valida-dependencia
======================================

Validador que olha para outros campos do formulário

1.3.2(8y ago)09.7k↑100%[1 issues](https://github.com/Pandora-una/pandora-valida-dependencia/issues)PHPPHP &gt;=5.3.3

Since Jan 11Pushed 8y ago5 watchersCompare

[ Source](https://github.com/Pandora-una/pandora-valida-dependencia)[ Packagist](https://packagist.org/packages/pandora-una/pandora-valida-dependencia)[ Docs](http://www.pandora.com.br/)[ RSS](/packages/pandora-una-pandora-valida-dependencia/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (9)Used By (0)

pandora-valida-dependencia
==========================

[](#pandora-valida-dependencia)

Um validador para criar regras em campos que dependem de outros campos

### Instalação

[](#instalação)

A forma recomendada de instalação é por [composer](https://getcomposer.org/):

```
    {
        "require": {
            "pandora-una/pandora-valida-dependencia": "1.3.*"
        }
    }

```

É necessário também adicionar o módulo PandoraValidaDependencia no seu application.config.php

```
    $modules = array(
        'DoctrineModule',
        'DoctrineORMModule',
        'PandoraValidaDependencia',
        'Application', // o application fica por ultimo pq ele pode sobrescrever as configurações dos demais
    );
```

### Uso

[](#uso)

O validador dependência cria regras condicionais para os campos de um formulário. ele tem 4 parâmetros obrigatórios nos options:

- **se\_campo**: O campo que será checado para validar o campo atual
- **tem\_valor**: O valor que o campo checado deve ter para que alguma regra se aplique, caso hajam dois valores diferentes para a aplicação da regra, este campo aceita um array
- **este\_campo**: A regra que será aplicada ao campo a ser validado caso o campo checado tenha o valor esperado
- **entidade**: O nome da entidade do doctrine que está sendo validada

Um exemplo de uso seria:

```
    $this->add(array(
        'name' => 'tem_filho',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'filho',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'tem_filho',
                    'tem_valor' => true,
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                    'entidade' => 'Application\Entity\Pessoa',
                ),
            ),
        ),
    ));
```

Neste caso o campo "filho" é obrigatório apenas se o campo "tem\_filho" tiver *true* como valor.

Um exemplo para uma regra que se aplica a dois valores do mesmo campo seria:

```
    $this->add(array(
        'name' => 'status',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'justificativa',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'status',
                    'tem_valor' => array('aprovada', 'nao_aprovada'),
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                    'entidade' => 'Application\Entity\Despesa',
                ),
            ),
        ),
    ));
```

#### Regras

[](#regras)

O validador tem no momento 4 regras possíveis

- **Dependencia::EH\_OBRIGATORIO**: O valor do campo sendo validado deve ser diferente de null
- **Dependencia::DEVE\_SER\_NULL**: O valor do campo sendo validado deve ser igual a null
- **Dependencia::EH\_OPCIONAL**: Aceita qualquer valor
- **Dependencia::NAO\_EH\_EDITAVEL**: O valor do campo sendo validado deve ser igual ao valor registrado no banco de dados.

A regra Dependencia::NAO\_EH\_EDITAVEL funciona apenas se a chave primária da entidade sendo validada estiver no formulário. Além disso é necessário passar o nome do campo nos options como no exemplo a seguir:

```
    $this->add(array(
        'name' => 'id',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'status',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'valor',
        'required' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'status',
                    'tem_valor' => 'Finalizado',
                    'este_campo' => Dependencia::NAO_EH_EDITAVEL,
                    'entidade' => 'Application\Entity\Pagamento',
                    'campo' => 'valor',
                ),
            ),
        ),
    ));
```

#### Campos opcionais

[](#campos-opcionais)

O validador dependência aceita mais dois campos opcionais:

- **da\_associacao**: O campo da associação da entidade a ser validada que o campo a ser checado se encontra.
- **caso\_contrario**: A regra de validação caso o valor do campo checado seja diferente do esperado.
- **se\_campos\_tem\_valores**: Recebe uma lista de campos e valores dos quais todos deverão ser satisfeitos no contexto para a regra se aplicar. Caso este campo seja preenchido os campos *se\_campo* e *tem\_valor* deixam de ser obrigatórios

Exemplo de uso de *da\_associacao*:

```
    $this->add(array(
        'name' => 'evento',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'documento',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'precisa_documento',
                    'da_associacao' => 'evento',
                    'tem_valor' => 'true',
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                    'entidade' => 'Application\Entity\Convidado',
                ),
            ),
        ),
    ));
```

No caso do campo *da\_associação*, também é possível declarar campos aninhados, como no exemplo a seguir:

```
    $this->add(array(
        'name' => 'formaPagamento',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'numeroCheque',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'exigeCheque',
                    'da_associacao' => 'formaPagamento.tipoPagamento',
                    'tem_valor' => 'true',
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                    'entidade' => 'Application\Entity\Convidado',
                ),
            ),
        ),
    ));
```

Exemplo de uso de *caso\_contrario*

```
    $this->add(array(
        'name' => 'tipo',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'pessoa_fisica',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campo' => 'tipo',
                    'tem_valor' => 'Pessoa Física',
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                    'caso_contrario' => Dependencia::DEVE_SER_NULL,
                    'entidade' => 'Application\Entity\Fornecedor',
                ),
            ),
        ),
    ));
```

Exemplo de uso de *se\_campo\_tem\_valor*

```
    $this->add(array(
        'name' => 'status',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'precisa_cotacao',
        'required' => true,
    ));
    $this->add(array(
        'name' => 'valor',
        'required' => false,
        'continue_if_empty' => true,
        'filters' => array(),
        'validators' => array(
            array(
                'name' => 'Dependencia',
                'options' => array(
                    'se_campos_tem_valores' => array(
                        'precisa_cotacao' => true,
                        'status' => 'incluido',
                    ),
                    'este_campo' => Dependencia::DEVE_SER_NULL,
                    'caso_contrario' => Dependencia::EH_OBRIGATORIO,
                    'entidade' => 'Application\Entity\ContPaga',
                ),
            ),
        ),
    ));
```

### Classes Auxiliares

[](#classes-auxiliares)

#### IfNotNull

[](#ifnotnull)

Para auxiliar a validar campos com obrigatoriedade condicional essa biblioteca disponibiliza um validador genérico que aplica uma validação específica apenas se o campo não for vazio

**opções:**

- *validator*: O validador a ser aplicado se o campo não for null
- *override\_message* (opcional): A mensagem de erro quando o validador falhar
- *override\_messages* (opcional): Lista que sobrescreve as mensagens de erro do validador

**exemplo de uso:**

```
    $this->add(array(
        'name'              => 'novoEmail',
        'required'          => false,
        'continue_if_empty' => true,
        'filters' => array(
            array(
                'name' => 'StripTags',
            ),
            array(
                'name' => 'StringTrim',
            ),
        ),
        'validators' => array(
            array(
                'name'    => 'IfNotNull',
                'options' => array(
                    'validator'        => 'EmailAddress',
                    'override_messages' => array(
                        EmailAddress::LENGTH_EXCEEDED => "O email é longo demais",
                    ),
                ),
            ),
            array(
                'name'    => 'Dependencia',
                'options' => array(
                    'se_campo'   => 'email',
                    'tem_valor'  => PessoaFisicaRepository::EMAIL_NOVO,
                    'este_campo' => Dependencia::EH_OBRIGATORIO,
                ),
            ),
        ),
    ));
```

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity63

Established project with proven stability

 Bus Factor1

Top contributor holds 95.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~57 days

Recently: every ~96 days

Total

8

Last Release

3003d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ee9c9cec72da8e423fb752d260b80425a1a0b69494d0054cc518aa66b566f0ab?d=identicon)[fabioginzel](/maintainers/fabioginzel)

---

Top Contributors

[![Dhinihan](https://avatars.githubusercontent.com/u/3867033?v=4)](https://github.com/Dhinihan "Dhinihan (23 commits)")[![w-sanches](https://avatars.githubusercontent.com/u/1727723?v=4)](https://github.com/w-sanches "w-sanches (1 commits)")

---

Tags

zf2pandorapandora-valida-dependencia

### Embed Badge

![Health badge](/badges/pandora-una-pandora-valida-dependencia/health.svg)

```
[![Health](https://phpackages.com/badges/pandora-una-pandora-valida-dependencia/health.svg)](https://phpackages.com/packages/pandora-una-pandora-valida-dependencia)
```

###  Alternatives

[stroker/form

ZF2 module for extending forms with live clientside validation

4157.1k](/packages/stroker-form)[san/san-captcha

Laminas Sample For Captcha

106.5k](/packages/san-san-captcha)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
