LH
Salvar vários CheckGroup no banco
Opa. Gostaria de salvar vários TCheckGroup na mesma coluna da tabela, mas por algum motivo não estou conseguindo salvar, no meu banco a coluna diasvalidos está como VARCHAR. Alguém pode da uma força? Agradeço
- <?php
- ini_set('display_errors',1);
- ini_set('display_startup_erros',1);
- error_reporting(E_ALL & ~E_WARNING);
- class VoucherForm extends TPage
- {
- private $form;
- public function __construct()
- {
- parent::__construct();
- //parent::setFormTitle( "Cadastro de Profissionais" );
- //parent::setSize( 0.600, 0.800 );
- $redstar = '<font color="red"><b>*</b></font>';
- $this->form = new BootstrapFormBuilder( "form_empresa" );
- $this->form->setFormTitle( "Cadastro de Novos Vouchers Principais" );
- $this->form->class = "tform";
- $id = new THidden( "id" );
- $empresa_id = new TDBCombo('empresa_id', 'database', 'EmpresaRecord', 'id', 'nomefantasia', 'nomefantasia');
- $datagerada = new TDate('datagerada');
- $nomeproduto = new TEntry('nomeproduto');
- $descricao = new TEntry('descricao');
- $datagerada ->setMask("dd/mm/yyyy");
- $datagerada ->setDatabaseMask("yyyy-mm-dd");
- $datagerada ->setValue(date("d/M/Y"));
- $datagerada ->setEditable(FALSE);
- $diasvalidos = new TCheckGroup('diasvalidos');
- $cb = array();
- $cb['1'] = 'Segunda-Feira';
- $cb['2'] = 'Terça-Feira';
- $cb['3'] = 'Quarta-Feira';
- $cb['4'] = 'Quinta-Feira';
- $cb['5'] = 'Sexta-Feira';
- $cb['6'] = 'Sábado';
- $cb['7'] = 'Domingo';
- $diasvalidos->addItems($cb);
- $diasvalidos ->setLayout('vertical');
- //$diasvalidos ->addItems($seg_item);
- $datagerada ->setMask("dd/mm/yyyy h:i:s");
- $datagerada ->setEditable(false);
- $datagerada ->setDatabaseMask("yyyy-mm-dd h:i:s");
- $datagerada ->setValue(date("d/m/Y H:i:s"));
- $empresa_id ->enableSearch();
- $this->form->addFields( [new TLabel("Empresa: {$redstar}")], [$empresa_id], [new TLabel("")], [$datagerada] );
- $this->form->addFields( [new TLabel("Produto: {$redstar}")], [$nomeproduto] );
- $this->form->addFields( [new TLabel("Descrição: {$redstar}")], [$descricao] );
- $this->form->addFields( [new TLabel("Dias Válidos: {$redstar}")], [$diasvalidos] );
- $this->form->addFields( [ $id ] );
- $this->form->addAction( 'Salvar', new TAction( [ $this, "onSave" ] ), 'fa:floppy-o' )->class = 'btn btn-sm btn-success';
- $this->form->addAction('Voltar', new TAction(array('VoucherList', 'onReload')), 'fa:arrow-left')->class = 'btn btn-sm btn-primary';
- $container = new TVBox();
- $container->style = "width: 100%";
- $container->add( $this->form );
- parent::add( $container );
- }
- public function onSave()
- {
- try {
- $this->form->validate();
- TTransaction::open( "database" );
- $voucher = $this->form->getData("VoucherRecord");
- foreach ($voucher->diasvalidos as $diasvalidos)
- {
- //$voucher->add DiasValidos(new Filter($diasvalidos);
- }
- $voucher->store();
- TTransaction::close();
- $action = new TAction( [ "VoucherList", "onReload" ] );
- new TMessage( "info", "Registro salvo com sucesso!", $action );
- } catch ( Exception $ex ) {
- TTransaction::rollback();
- new TMessage( "error", "Ocorreu um erro ao tentar salvar o registro!<br><br><br><br>" . $ex->getMessage() );
- }
- }
- public function onEdit( $param )
- {
- try {
- if( isset( $param[ "key" ] ) ) {
- TTransaction::open( "database" );
- $object = new VoucherRecord($param["key"]);
- $this->form->setData($object);
- TTransaction::close();
- }
- } catch ( Exception $ex ) {
- TTransaction::rollback();
- new TMessage( "error", "Ocorreu um erro ao tentar carregar o registro para edição!<br><br>" . $ex->getMessage() );
- }
- }
- }
Utilize o var_dump($data->diasvalidos) e receberá como resultado um array.
Utilize:
Não entendi esse código Marcelo.
No onSave vc captura o conteúdo do formulário certo?
Um dos campos é o "diasvalidos" que um TCheckgroup.
Ele retorna um array, no lugar do seu foreach, vc usa:
$diasvalidos = implode(',',$voucher->diasvalidos);
isso fará com que a sua variável dias válidos fique assim = '1,3,4', ou seja os itens checados.
Agora para transforma a string salva no banco em um array para popular o TcheckGroup, vc deve usar o explode.
São métodos (funções) php para manipular arrays.