Include dinâmico - RESOLVIDO

Olá pessoal.

Eu gostaria de poder personalizar padrões de envio de e-mail em uma tabela pra que o usuário pudesse adaptar o texto em tempo de execução. É como se eu fosse fazer um include de um arquivo php. Só que neste caso não seria um arquivo, mas um conteúdo em uma tabela.

Isso é possível?

Claramente possível e praticável.

Uma tabela para guardar templates de corpo de mensagens de email basta ter um campo do tipo logtext cujo o conteúdo possa ser inserido em formato html, usando um campo do tipo editor html. Criando-se o layout palavras chaves podem ser inseridas para serem substituídas antes de passar para a macro de envio de email> Tipo {@nome} pode-se substituir pelo nome do destinatário.

Mas é possível eu usar variáveis globais ao invés de palavras chaves pra serem substituídas?

veja isso:

$conteudo = str_replace(’#empresaNome#’, $osDados[‘empresaNome’], $conteudo);
$conteudo = str_replace(’#empresaCnpj#’, $osDados[‘empresaCnpj’], $conteudo);
$conteudo = str_replace(’#empresaEndereco#’,$osDados[‘empresaEndereco’],$conteudo);
$conteudo = str_replace(’#empresaFone#’, $osDados[‘empresaFone’], $conteudo);
$conteudo = str_replace(’#empresaEmail#’, $osDados[‘empresaEmail’], $conteudo);
$conteudo = str_replace(’#empresaLogo#’, $osDados[‘empresaLogo’], $conteudo);
$conteudo = str_replace(’#clienteNome#’, $osDados[‘clienteNome’], $conteudo);
$conteudo = str_replace(’#clienteCpf#’, $osDados[‘clienteCpf’], $conteudo);
$conteudo = str_replace(’#clienteFone#’, $osDados[‘clienteFone’], $conteudo);
$conteudo = str_replace(’#tipoMarca#’, $osDados[‘tipoMarca’], $conteudo);
$conteudo = str_replace(’#numeroSerie#’, $osDados[‘numeroSerie’], $conteudo);
$conteudo = str_replace(’#taxaOrcamento#’, $osDados[‘taxaOrcamento’], $conteudo);
$conteudo = str_replace(’#previsaoEntrega#’,$osDados[‘previsaoOrcamento’],$conteudo);
$conteudo = str_replace(’#atendidoPor#’, $osDados[‘atendidoPor’], $conteudo);

onde: $conteudo tem o texto com as “variaveis” envolvidas por #

o primeiro parâmetro é o que deve ser substituido, o segundo o subtituto e o terceiro onde substituir…

no onload faz a mudança…

by @jorgepopel

1 Curtida

Sim sim, essa parte eu entendi.

Minha questão agora é a possibilidade de eu usar variáveis globais [variavel] se eu não quiser substituir com o str_replace.

eu nãotestei, mas tenta substituir #teste# por [vglobal], por exemplo

não, não é possível, pois a global só pode usar em tempo de desenvolvimento, não de execução. Tem que processar a substituição de palavras chaves.

1 Curtida

Perfeito!

Obrigado!!

Quando usar [VAR_GLOBAL] no código, após gerado os fontes, isso se transforma em um atributo da classe do formulário com outro nome. Por isso não pode simplesmente gravar no template no banco de dados [VAR_GLOBAL] e achar que alimentando [VAR_GLOBAL] simplesmente o código vai ser substituído.

/////////////////////////////////////////////////////////////////////////
// Check for record modelo
$check_sql = "SELECT Codigo,Modelo,Descricao FROM contrato WHERE Codigo = " . {MODELO};
sc_lookup(mo, $check_sql);

if (isset({mo[0][0]})) // Row found
{
{DESCRICAO} = {mo[0][2]};
}
else // No row found
{
{DESCRICAO} = ‘

MODELO NAO ENCONTRADO

’;
}

{DESCRICAO} = str_replace(“tagCliente”, $Cliente, {DESCRICAO});
{DESCRICAO} = str_replace(“tagEndereco”, $Endereco, {DESCRICAO});
{DESCRICAO} = str_replace(“tagNumero”, $Numero, {DESCRICAO});
{DESCRICAO} = str_replace(“tagBairro”, $Bairro, {DESCRICAO});
{DESCRICAO} = str_replace(“tagReferencia”, $Referencia, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCidade”, $lCidade, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCep”, $Cep, {DESCRICAO});
{DESCRICAO} = str_replace(“tagTelefone”, $Telefone, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCelular”, $Celular, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCelular2”, $Celular2, {DESCRICAO});
{DESCRICAO} = str_replace(“tagEmail”, $Email, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCpf”, $Cpf, {DESCRICAO});
{DESCRICAO} = str_replace(“tagRg”, $Rg, {DESCRICAO});
{DESCRICAO} = str_replace(“tagCnpj”, $Cnpj, {DESCRICAO});
{DESCRICAO} = str_replace(“tagInscricao”, $Inscricao, {DESCRICAO});
{DESCRICAO} = str_replace(“tagAniversario”, $Aniversario, {DESCRICAO});
{DESCRICAO} = str_replace(“tagEstadocivil”, $estadocivil, {DESCRICAO});
{DESCRICAO} = str_replace(“tagPis”, $Pis, {DESCRICAO});
{DESCRICAO} = str_replace(“tagConjuge”, $Conjuge, {DESCRICAO});
{DESCRICAO} = str_replace(“tagProfissao”, $lProfissao, {DESCRICAO});
{DESCRICAO} = str_replace(“tagNacionalidade”, $Nacionalidade, {DESCRICAO});
{DESCRICAO} = str_replace(“tagComarca”, $lComarca, {DESCRICAO});
{DESCRICAO} = str_replace(“tagUf”, $Uf, {DESCRICAO});

perfeito!
Mais uma para o “caderninho”.

tem essa alternativa:

[var_global] = “#qualquercoisa#”;
$_temp = [var_global];
$texto_padrao = “Este é um texto que deverá ter campo $_temp subtituido”;
echo “< br >texto antes da substituição:$texto_padrao< br >”;
$texto_padrao = str_replace("$_temp", “-novo conteudo-”, $texto_padrao);
echo “< br >texto depois da substituição:$texto_padrao< br >”;

tirar os espaços do < br > depois

1 Curtida

eu tenho uma tabela que guarda as palavras chaves, e o select na tabela para trazer esse valor. Rastreio a string template, quando encontro {@ pego o próximo texto até encontrar }, pesquiso nessa tabela a palavra chave, executo o select referente, e faço a substituição.
Fiz uma classe OOP onde passo como string apenas o texto html e a classe me retorna o texto já com todas as substituições.

Aí é outro nível.
O que eu passei acima é uma “gabiarrinha”. hehehehe