Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com Formulário Symfony


Carlos Colon

Pergunta

Olá pessoal, trabalho na ABRALE e estou tentando ajudar no site, o problema é que ta tudo em Symfony e não entendo nada...

Bom, o problema é o seguinte, no link http://www.abrale.org.br/contatopediram pra eu adicionar os campos: Departamento e Tratamento, consegui colocar após muito tempo tentando achar no ftp os seguintes arquivos:

<?php use_helper('Util') ?>

<div id="section-content" class="content page">
    <h2><?php echo __('Fale conosco') ?></h2>

    <div id="section-article" class="two-column left-column">
           <?php echo renderFlashMessage() ?>
        
        <?php echo __('
<p><strong>Para que a nossa equipe possa ajudá-lo, preencha os campos abaixo:</strong></p>
<p>Se preferir, entre em contato por telefone pelo <strong style="color:#C51A41">0800 773 99 73</strong> de segunda à sexta, das <strong style="color:#C51A41">9h às 18h</strong>.</p>
<p>Toda a ajuda que a <strong style="color:#C51A41">ABRALE</strong> oferece é gratuita para pacientes de todo o Brasil. As informações que recebemos são confidenciais.</p>

') ?>

        <form action="<?php echo url_for('default/contato') ?>" method="post" id="form-contato">
            <?php echo $form->renderHiddenFields(false) ?>
            <?php echo $form->renderGlobalErrors() ?>

            <?php echo $form['CmsUsuario']['nome']->renderRow(array('class' => "text", 'size' => "60")) ?>
            <?php echo $form['CmsUsuario']['email']->renderRow(array('class' => "text", 'size' => "60")) ?>

            <?php echo $form['CmsUsuario']['telefone_res']->renderRow(array('class' => "text")) ?>
			<?php echo $form['voce']->renderRow() ?>
			<div id="div_contato_doenca" style="display:none"><?php echo $form['doenca']->renderRow() ?></div>
			<?php echo $form['dpto']->renderRow() ?>
			<?php echo $form['assunto']->renderRow(array('class' => "text", 'size' => "60")) ?>
			<?php echo $form['mensagem']->renderRow(array('rows' => "10", 'cols' => "80")) ?>
			<?php echo $form['plano']->renderRow() ?>

            <p align="center">
                <input class="button3" type="submit" value="<?php echo __('Enviar') ?>" />
            </p>
        </form>
    </div>

    <div id="section-article" class="two-column right-column">
        <?php include_partial('global/right_column') ?>
    </div>

    <div class="clear"></div>
</div>
<script type="text/javascript">
    function toogleDoenca() {
        var value = $('#contato_voce').val().toLowerCase();

        if (value == 'paciente' || value == 'familiar') {
            $('#div_contato_doenca').show();
        } else {
            $('#div_contato_doenca').hide();
        }
    }
    
    $(function() {
        $('#contato_voce').change(function(){
            toogleDoenca();
        });
    });
	
		</script>

e

<?php

class ContatoForm extends sfForm {

    private $usuario;

    public function configure() {
        $this->getWidgetSchema()->setDefaultFormFormatterName('public');

        sfContext::getInstance()->getConfiguration()->loadHelpers('I18N');

        $doencas = array(
            __('Mielodisplasia ou Síndrome Mielodisplásica'),
            __('Mieloma Múltiplo'),
            __('Linfomas'),
            __('Leucemias'),
            __('HPN - Hemoglobinúria paroxística noturna'),
            __('Macroglobulinemia de Waldenstrom'),
            __('Policitemia Vera (a)'),
            __('Trombocitemia Essencial (b)'),
            __('(a, b e c) Doenças Mieloproloferativas Crônicas'),
            __('Mielofibrose (c)'),
            __('Púrpura Trombocitopenica Idiopática - PTI')
        );
        $doencas = array_combine($doencas, $doencas);
        $doencas = array_merge(array('' => __("- Selecione -")), $doencas);
        
        $informacoes = array(
            __('Entendendo riscos e opções relacionadas ao tratamento do câncer e à fertilidade'),
            __('Encontrando recursos relacionados à fertilidade')
        );
        $informacoes = array_combine($informacoes, $informacoes);
        
        $preocupacoes = array(
            __('Acessando tratamentos médicos e dispositivos médicos'),
            __('Encontrando assistência sem convênio'),
            __('Encontrando assistência com convênio'),
            __('Lidando com a discriminação no trabalho')
        );
        $preocupacoes = array_combine($preocupacoes, $preocupacoes);
        
        $contatos = array(
            __('Presidência'),
            __('Diretoria'),
            __('Assessoria de Imprensa'),
            __('Sugestões e Reclamações'),
            __('Captação de Recursos')
        );
        $contatos = array_combine($contatos, $contatos);

        $departamentos = array(
            __('Informação sobre preservação da fertilidade e assistência:') => $informacoes,
            __('Preocupações com questões de trabalho, convênio e financeiras:') => $preocupacoes,
            __('Contato direto:') => $contatos
        );

        $voce = array(__('Amigo'), __('Familiar'), __('Paciente'), __('Profissional da saúde'), __('Outro'));
        $voce = array_combine($voce, $voce);
		$voce = array_merge(array('' => __("- Selecione -")), $voce);
		
		$dpto = array(__('Jurídico'), __('Psicologia'), __('Apoio ao paciente'), __('RH'), __('Marketing'), __('Financeiro'), __('Outros, Não sei'));
        $dpto = array_combine($dpto, $dpto);
		$dpto = array_merge(array('' => __("- Selecione -")), $dpto);
		
		$plano = array(__('SUS'), __('Plano de Saúde'));
        $plano = array_combine($plano, $plano);
		$plano = array_merge(array('' => __("- Selecione -")), $plano);

        $this->setWidgets(array(
            'mensagem' => new sfWidgetFormTextarea(),
            'voce' => new sfWidgetFormChoice(array('choices' => $voce)),
            'doenca' => new sfWidgetFormChoice(array('choices' => $doencas)),
            'assunto' => new sfWidgetFormInputText(),
            'departamento' => new sfWidgetFormChoice(array('choices' => $departamentos)),
			'dpto' => new sfWidgetFormChoice(array('choices' => $dpto)),
			'plano' => new sfWidgetFormChoice(array('choices' => $plano))
        ));

        $this->setValidators(array(
            'mensagem' => new sfValidatorString(array('required' => true)),
            'voce' => new sfValidatorChoice(array('choices' => $voce, 'required' => false)),
            'doenca' => new sfValidatorChoice(array('choices' => array_keys($doencas), 'required' => false)),
			'assunto' => new sfValidatorString(array('max_length' => 255, 'required' => false)),
            'departamento' => new sfValidatorChoice(array('choices' => array_keys(array_merge($informacoes, $preocupacoes, $contatos)), 'required' => true)),
			'dpto' => new sfValidatorChoice(array('choices' => array_keys($dpto), 'required' => false)),
			'plano' => new sfValidatorChoice(array('choices' => array_keys($plano), 'required' => false))
	
		));

        $this->getWidgetSchema()->setLabels(array(
            'voce' => "Você é?",
            'area' => "Área",
			'dpto' => "Departamento",
			'plano' => "Tratamento <br />(Se aplicável)",
            'doenca' => "Doença"));

        if (sfContext::getInstance()->getUser()->isAuthenticated()) {
            $this->usuario = Doctrine::getTable('CmsUsuario')
                    ->createQuery('u')
                    ->innerJoin('u.sfGuardUser')
                    ->where('u.id = ?', sfContext::getInstance()->getUser()->getGuardUser()->getId())
                    ->fetchOne();

            $form = new CmsUsuarioPublicForm($this->usuario);
        } else {
            $form = new CmsUsuarioPublicForm();
        }

        unset($form['atribuir_sfGuardUser'], $form['sfGuardUser']);

        $form->getWidgetSchema()->setLabels(array(
            'telefone_res' => "Telefone"
        ));

        $form->validatorSchema->setPostValidator(new sfValidatorPass());
        $this->embedForm('CmsUsuario', $form);
//        $this->setValidator('CmsUsuario', new sfValidatorPass());

        $this->widgetSchema->setNameFormat('contato[%s]');
    }

    public function save() {
        $mailer = sfContext::getInstance()->getMailer();
        $str = nl2br($this->getValue('mensagem'));
        
        $doenca = strtolower($this->getValue('voce')) == 'paciente' || strtolower($this->getValue('voce')) == 'familiar' ? $this->getValue('doenca') : '- não informado -';
		        
        $values    = $this->getValues();
        $user_data = $values['CmsUsuario'];

        $message = Swift_Message::newInstance()
                ->setFrom($user_data['email'])
                ->setTo(sfConfig::get('app_contato_email'))
                ->setSubject('[ABRALE.org.br] Envio de contato pelo formulário do site')
                ->setBody(<<<EOF
<table>
<tr>
    <th colspan="2">Dados pessoais</th>
</tr>
<tr>
    <th align="left">Nome:</th><td>{$user_data['nome']}</td>
</tr>
<tr>
    <th align="left">Email:</th><td>{$user_data['email']}</td>
</tr>
<tr>
    <th align="left">Telelefone:</th><td>{$user_data['telefone_res']}</td>
</tr>
<tr>
    <th colspan="2">Dados de contato</th>
</tr>
<tr>
    <th align="left">Você é?:</th><td>{$this->getValue('voce')}</td>
</tr>
<tr>
    <th align="left">Departamento?:</th><td>{$dpto}</td>
</tr>
<tr>
    <th align="left">Tratamento:</th><td>{$plano}</td>
</tr>         
<tr>
    <th align="left">Doença:</th><td>{$doenca}</td>
</tr>
<tr>
    <th align="left">Assunto:</th><td>{$this->getValue('assunto')}</td>
</tr>
<tr>
    <th align="left">Departamento:</th><td>{$this->getValue('departamento')}</td>
</tr>

</table>

<h3>Mensagem</h3>
<p>$str</p>
EOF
, 'text/html');

        $mailer->send($message);
    }

}

Ao clicar em enviar o formulário da erro, pelo que entendi, é alguma coisa de validação dos campos que adicionei, porém substitui tudo exatamente como está programado o campo "Você é?", já olhei tudo que é possível e não consigo solucionar esse problema, alguém pode me ajudar?

Editado por Carlos Colon
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...