Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nerdmonkey

Classe para criar inputs

Recommended Posts

Boa tarde.

 

Preciso de uma visão extra. Estou estudando OO ainda e estou com dificuldades no código que estou criando abaixo:

 

 

    /**
     * <b>GenerateInput:</b> Gera os input's com os dado passado no array $NomesCampo e retorna o input criado com os padrões HTML5
     */
    public function GenerateInput(){
        foreach($this->NomesCampo as $ArrCampos):
            
                $createTxtStrong=ucwords($nome);
                $createTag .="<label><strong>{$createTxtStrong}</strong>";
                $createTag.="<input type='{$input_type}' name='{$nome}' value='{$value_input}' placeholder='{$placeholder}'>";
                $createTag .="</label>";        
                
                echo '<pre>';
                    var_dump($ArrCampos);
                echo '</pre>';
                
        endforeach;        
    }

O debug ficou assim

 

 

array(4) {
["nome"]=>
string(9) "categoria"
["type"]=>
string(6) "select"
["content"]=>
string(7) "dinamic"
["table"]=>
string(14) "cgv_categorias"
}
array(3) {
["nome"]=>
string(8) "publicar"
["type"]=>
string(6) "select"
["content"]=>
string(4) "boll"
}
array(2) {
["nome"]=>
string(5) "teste"
["type"]=>
string(5) "input"
}
array(2) {
["nome"]=>
string(6) "teste1"
["type"]=>
string(5) "input"
}

 

Gostaria de uma força porque preciso percorrer, nesse caso, apenas os inputs com type = input, estou tentando aqui também, qualquer ajuda é bem vinda


Blz pessoal consegui resolver.

 

 

  /**
     * <b>GenerateInput:</b> Gera os input's com os dado passado no array $NomesCampo e retorna o input criado com os padrões HTML5
     */
    public function GenerateInput(){
        foreach($this->NomesCampo as $ArrCampos => $K):
                $TypeInput=$K['type'];
                if($TypeInput=='input'):
                    $createTxtStrong=ucwords($K['nome']);
                
                    $createTag .="<label><strong>{$createTxtStrong}</strong>";
                    $createTag.="<input type='{$K['input_type']}' name='{$K['nome']}' value='{$K['value_input']}' placeholder='{$K['placeholder']}'>";
                    $createTag .="</label>";     
                endif;
        endforeach;        
        echo $createTag;
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei bem legal o resultado então, vou deixar ai pra vocês usarem, implementarem, criticarem(construtivamente):

<?php
 
/**
 * CreateForms.class [ Create helper ]
 * Responsável por criar os formulários do sistema
 * @copyright (c) 2015, Samuel dos Santos   Programação Criativa
 */
class CreateForms {
    private $NomesCampo;
    
    function __construct(array $NomesCampo) {
        $this->NomesCampo = $NomesCampo;
    }
    
    /**
     * <b>getContentSelect:</b> Popula um select conforme as configuração do array $NomesCampo
     */
    public function GenerateContentSelect($Table,$CampoTabela) {
        $dao=new Dao(); // Composição de classes
        $getContentSelect=$dao->getAll($Table, '*', "WHERE status = 1 ORDER BY {$CampoTabela}");
       
        if($getContentSelect==true):
            foreach($getContentSelect as $ContentSelect):
                $createTag .="<option value='{$ContentSelect->id}'>{$ContentSelect->$CampoTabela}</option>";
            endforeach;  
        endif;
 
        return $createTag;
    }
    
    /**
     * <b>GenerateSelect:</b> Cria um select com base no parâmetros passados no array $NomesCampo
     */
    public function GenerateSelect() {
        foreach($this->NomesCampo as $ArrCampos => $K):
            $TypeInput=$K['type'];
            
            if($TypeInput=='select'):
                $NomeInput=ucfirst(preg_replace('/_/i',' ', $K['nome']));
                $createTag .="<label><strong>{$NomeInput}</strong>";
                $start_action=$K['disabled'];
                
                if($start_action==true):$disabled=' disabled';endif;
                
                // Cria um select e popula com os dados do Banco
                if($K['content']=='dinamic'):
                    $createTag .="<select name='{$Name}'{$disabled}>";
                    $createTag .="<option value='0'>Selecione</option>";
                    $createTag .=$this->GenerateContentSelect($K['table'],$K['campo_tabela']);                
                    $createTag .="</select>";
                        
                // Cria um select bool [sim/não]
                elseif($K['content']=='bool'):
                    $selected=$K['selected'];
                    if($selected==1):
                        $selected1=='selected="selected"';
                    elseif($selected==2):
                        $selected2=='selected="selected"';
                    else:
                        $selected0=='selected="selected"';
                    endif;
                
                    if(empty($K['info_content'])):
                        $createTag.="<select name='{$nome} {$disabled}'>";
                            $createTag .="<option value='0' {$selected0}>Selecione</option>";
                            $createTag.="<option value='1' {$selected1}>Sim</option>";
                            $createTag.="<option value='2' {$selected2}>Não</option>";
                        $createTag .="</select>";
                    else:
                        $createTag.="<select name='{$K['nome']} {$disabled}'>";
                        $createTag .="<option value='0'>Selecione</option>";
                        $i=0;
                        foreach($K['info_content'] as $Id => $Info):
                            if($K['selected']==$Id):
                                $selected='selected';
                            endif;
                            $createTag.="<option value='{$Id}' {$selected}>{$Info}</option>";
                            $ii++;
                        endforeach;
                        
                        $createTag .="</select>";
                    endif;
                endif;
                
                $createTag .="</label>";
            endif;
        endforeach;
        echo $createTag;
    }
    
    /**
     * <b>GenerateInput:</b> Gera os input's com os dado passado no array $NomesCampo e retorna o input criado com os padrões HTML5
     */
    public function GenerateInput(){
        foreach($this->NomesCampo as $ArrCampos => $K):
                $TypeInput=$K['type'];
                if($TypeInput=='input'):
                    if($K['required']==true):
                        $required='required';
                        $title=$K['title'];
                    endif;
                    $createTxtStrong=ucfirst(preg_replace('/_/i', ' ', $K['nome']));
                
                    $createTag .="<label><strong>{$createTxtStrong}</strong>";
                    $createTag.="<input type='{$K['input_type']}' name='{$K['nome']}' value='{$K['value_input']}' placeholder='{$K['placeholder']}' {$required} title='{$title}'>";
                    $createTag .="</label>";     
                endif;
        endforeach;        
        echo $createTag;
    }
    
        /**
     * <b>GenerateTextarea:</b> Gera os textareas com os dado passado no array $NomesCampo e retorna o textarea criado com os padrões HTML5
     */
    public function GenerateTextarea(){
        foreach($this->NomesCampo as $ArrCampos => $K):
                $TypeInput=$K['type'];
                if($TypeInput=='textarea'):
                    $createTxtStrong=ucfirst(preg_replace('/_/i', ' ', $K['nome']));
                
                    $createTag .="<label><strong>{$createTxtStrong}</strong>";
                    $createTag.="<textarea name='{$K['nome']}' placeholder='{$K['placeholder']}'>{$K['value_input']}</textarea>";
                    $createTag .="</label>";     
                endif;
        endforeach;        
        echo $createTag;
    }
    
    /**
     * <b>GenerateSelect:</b> Executa os métodos da classe
     */
    public function GenerateCode() {
            $this->GenerateSelect();
            $this->GenerateInput();
            $this->GenerateTextarea();
    }
}
 

Usage

$Campos=[
    'campo1'=>['propriedade'=>'value'] 
    // ...
    
    /**
     * @var $nome - Name do campo e título do label
     * @var $type - Tipo de campo à ser criado
     * @var $placeholder - Placeholder
     * @var $required - Campos requireds
     * @var $title - Título para campos requireds
     * @var $table - A tabela que será pesquisada para popular o select
     * @var $campo_tabela - O campo que será retornado como texto do input
     * @var $disabled - Campos disabled
     * @var $info_content - Caso queira mudar o texto padrão para o select type boll[sim/não]
     * @var $content - O tipo de conteúdo do select [dinamic: utiliza a busca na tabela | bool: será o sim/não]s
     */
];
<form method="post" class="frms" enctype="multipart/form-data">
    <input type="hidden" name="action" value="inserir">
 
    <?php
    $CreateForms=new CreateForms($Campos);
    $CreateForms->GenerateCode();            
    ?>
            
</form>

 

Documentei o que deu, mas dá pra implementar muito e criar todas as tags dinamicamente. Os admin que entendem mais podem ajudar também a melhorar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.