Example #1
0
 public function prepararCamposComplementares(array $data = array())
 {
     $form = $this->getForm();
     if (null === $form) {
         return null;
     }
     $formName = $form->getName();
     $configuration = new FormConfiguration();
     $config = $configuration->loadFormConfiguration($formName);
     $campos = $configuration->findCamposComplementares($formName);
     $camposValores = array();
     if (count($campos) > 0) {
         foreach ($campos as $campo) {
             // Array de controle para salvar na tabela de campoformulariovalor
             $campoValor = array('codvalor' => null, 'codcampo' => $campo->getCodcampo(), 'codregistro' => null, 'valor' => null);
             $repository = ServiceLocator::getInstance()->getRepository('Entity\\' . ucwords($campo->getFormulario()->getNometabela()));
             $pk = $repository->getPrimaryKey();
             // Verifica se o formulário tem primary key para buscar o valor do campo complementar
             if (!is_null($pk)) {
                 // Captura o elemento dentro do formulário para depois saber o valor para buscar na entidade de configuração
                 $elementPk = $form->getElement($pk);
                 // Verifica se o elemento informado como primary key existe realmente no formulário
                 if (!is_null($elementPk)) {
                     // Busca o valor da campo com o nome da primary key dentro do formulário
                     $valuePk = $elementPk->getValue();
                     $repoConfFormValor = $configuration->getRepoCampoFormularioValor();
                     $conf = $repoConfFormValor->getValue($campo->getCodcampo(), $valuePk);
                     if (!$conf->isEmpty()) {
                         $campoValor['codvalor'] = $conf->getCodvalor();
                     }
                     $campoValor['codregistro'] = $valuePk;
                 }
                 if (array_key_exists($campo->getNomecampo(), $data)) {
                     $campoValor['valor'] = $data[$campo->getNomecampo()];
                 }
             }
             $camposValores[$campo->getNomecampo()] = $campoValor;
         }
     }
     $this->_camposComplementares = $camposValores;
     return $this;
 }