Ir ao conteúdo
  • Cadastre-se

j.amaro

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. boa noite, sou novo aqui estou iniciando nesse novo framework CakePHP e estou com algumas duvida gostaria da ajuda de vocês, estou fazendo um sistema de cadastro, crie o formulário e a tabela para exibir os dados do que eles fica em paginas diferente tipo, a pagina add contem o formulário de cadastro e a índex tem a tabela com os dados cadastrados no banco de dados, eu queria deixa tudo em um pagina só quando o formularios fosse salvo ele simplimente atualize a pagina e seja exibido embaixo os dados cadastrado na tabela que tem no índex, alguém teria como me ajuda. vou coloca aqui os código do controlle do índex e do add Controlle <?php namespace App\Controller; use App\Controller\AppController; use Cake\ORM\TableRegistry; use Cake\Http\Response; use Cake\Datasource\ConnectionManager; use Faker; use Cake\Core\App; /** * Ordemservicos Controller * * @property \App\Model\Table\OrdemservicosTable $Ordemservicos */ class OrdemservicosController extends AppController { /** * Index method * * @return \Cake\Network\Response|null */ public function initialize() { parent::initialize(); $this->loadModel('Ordemservicos'); $this->loadModel('Acompanhamentos'); $this->loadModel('Situacaos'); } public function lista() { $ordemervicos = $this->Ordemservicos->find('all'); pr($ordemervicos); $this->set('ordemservicos',$ordemervicos); } public function dados() { $ordemservicos = $this->Ordemservicos->find(); $this->set(compact('ordemservicos')); } public function index() { // $this->loadModel('Situacaos'); // $situacaos = TableRegistry::get('Situacaos'); // $this->set('Situacaos', $situacaos->find('all', array('limit' => 1, 'order' => 'situacaos.created DESC'))); $this->paginate =[ 'contain' => ['situacaos', 'acompanhamentos'], // 'order' => ['situacaos.created DESC'] ]; // $ordemservico = $this->Ordemservicos->get($id, [ // 'contain' => ['Acompanhamentos', 'Situacaos'] // ]); //$ordemservicos = $this->Ordemservicos->find(); $ordemservicos = $this->paginate($this->Ordemservicos); $this->set(compact('ordemservicos', 'acompanhamentos', 'situacaos')); $this->set('_serialize', ['ordemservicos', 'acompanhamentos', 'situacaos']); } /** * View method * * @param string|null $id Ordemservico id. * @return \Cake\Network\Response|null * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function view($id = null) { $ordemservico = $this->Ordemservicos->get($id, [ 'contain' => ['Acompanhamentos', 'Situacaos'] ]); $this->set('ordemservico', $ordemservico); $this->set('_serialize', ['ordemservico']); } /** * Add method * * @return \Cake\Network\Response|void Redirects on successful add, renders view otherwise. */ public function add() { $ordemservico = $this->Ordemservicos->newEntity(); if ($this->request->is('post')) { $ordemservico = $this->Ordemservicos->patchEntity($ordemservico, $this->request->data,['associated' => ['Acompanhamentos']]); // pr($ordemservico);exit; if ($this->Ordemservicos->save($ordemservico)) { $this->Flash->success(__('The {0} has been saved.', 'Ordemservico')); return $this->redirect(['action' => 'add']); } else { $this->Flash->error(__('The {0} could not be saved. Please, try again.', 'Ordemservico')); } } $this->set(compact('ordemservico')); $this->set('ordemservico', $ordemservico); //$this->set('_serialize', ['ordemservico']); $this->set('_serialize', ['ordemservicos', 'acompanhamentos', 'situacaos']); } /** * Edit method * * @param string|null $id Ordemservico id. * @return \Cake\Network\Response|void Redirects on successful edit, renders view otherwise. * @throws \Cake\Network\Exception\NotFoundException When record not found. */ public function edit($id = null) { $ordemservico = $this->Ordemservicos->get($id, [ 'contain' => [] ]); if ($this->request->is(['patch', 'post', 'put'])) { $ordemservico = $this->Ordemservicos->patchEntity($ordemservico, $this->request->data); if ($this->Ordemservicos->save($ordemservico)) { $this->Flash->success(__('The {0} has been saved.', 'Ordemservico')); return $this->redirect(['action' => 'index']); } else { $this->Flash->error(__('The {0} could not be saved. Please, try again.', 'Ordemservico')); } } $this->set(compact('ordemservico')); $this->set('_serialize', ['ordemservico']); } /** * Delete method * * @param string|null $id Ordemservico id. * @return \Cake\Network\Response|null Redirects to index. * @throws \Cake\Datasource\Exception\RecordNotFoundException When record not found. */ public function delete($id = null) { $this->request->allowMethod(['post', 'delete']); $ordemservico = $this->Ordemservicos->get($id); if ($this->Ordemservicos->delete($ordemservico)) { $this->Flash->success(__('The {0} has been deleted.', 'Ordemservico')); } else { $this->Flash->error(__('The {0} could not be deleted. Please, try again.', 'Ordemservico')); } return $this->redirect(['action' => 'index']); } } Index <?php use Cake\ORM\TableRegistry; use Cake\Core\Configure; $acompanhamentos = TableRegistry::get('Acompanhamentos'); // $acompanhamentos = $acompanhamentos->find(); $situacaos = TableRegistry::get('Situacaos'); $situacaos = $situacaos->find(); ?> <section class="content-header"> <h1> <div class="pull-right"><?= $this->Html->link(__('New'), ['action' => 'add'], ['class'=>'btn btn-success btn-xs']) ?></div> </h1> </section> <!-- Main content --> <section class="content"> <div class="row"> <div class="col-xs-12"> <div class="box"> <div class="box-header"> <h3 class="box-title"><?= __('Listando') ?> Ordens de Serviço</h3> </div> <!-- /.box-header --> <div class="box-body table-responsive no-padding"> <table id="ordemservicos" class="table table-bordered table-hover"> <thead> <tr> <th>Ordem de Serviçoaaaaaaa</th> <th>Ordem de Serviço</th> <th>Cliente</th> <th>Data Cadastrada</th> <th>Tipo do Serviço</th> <th>Orçamento</th> <th>Inicio Previsto</th> <th>Conclusão Prevista</th> <th>UF</th> <th>Tecnologia Usada </th> <th>Situação Atual </th> <th>Ações</th> </tr> </thead> <tbody> <?php foreach ($ordemservicos as $ordemservico) { foreach ($ordemservico->situacaos as $situacaos) ?> <tr> <td><?= h($situacaos->situacao) ?></td> <td><?= h($ordemservico->ordemservicos) ?></td> <td><?= h($ordemservico->ordemservicosClienteOS) ?></td> <td><?= h($ordemservico->ordemservicosData) ?></td> <td><?= h($ordemservico->ordemservicosTipoServico) ?></td> <td><?= h($ordemservico->ordemservicosOçamentoPrev) ?></td> <td><?= h($ordemservico->ordemservicosInicioPrev) ?></td> <td><?= h($ordemservico->ordemservicosConclusaoPrev) ?></td> <td><?= h($ordemservico->ordemservicosUf) ?></td> <td><?= h($ordemservico->ordemservicostecnologia) ?></td> <td> <?php if ( ($situacaos->situacao) == 'Interrompido' ) echo "<span class=\"label label-warning\">Interrompido</span>"; else if ( ($situacaos->situacao) == 'Em Execução') echo "<span class=\"label label-success\">Em Execução</span>"; else if ( ($situacaos->situacao) == 'Concluido') echo "<span class=\"label label-info\">Concluido</span>"; else if ( ($situacaos->situacao) == 'Cancelado') echo "<span class=\"label label-danger\">Cancelado</span>"; else if ( ($situacaos->situacao) == 'Elaboração do Orçamento') echo "<span class=\"label label-primary\">Em Elaboração</span>"; else if ( ($situacaos->situacao) == 'Aprovação do Orçamento') echo "<span class=\"label label-primary\">Em Aprovação</span>"; else if ( ($situacaos->situacao) == 'Em Medição') echo "<span class=\"label label-primary\">Em Medição</span>"; else if ( ($situacaos->situacao) == 'Medição Enviada') echo "<span class=\"label label-primary\">Med. Enviada</span>"; else if ( ($situacaos->situacao) == 'Medição Aprovada') echo "<span class=\"label label-success\">Med. Aprovada</span>"; else ( ($situacaos->situacao) == null); echo "<span class=\"label label-default\">Aguardando</span>"; ?></td> <td class="actions" style="white-space:nowrap"> <!--- Começo do aAguardando--> <?php if ( ($situacaos->situacao) == null ) ?> <?= $this->Html->link(__('Iniciar'), ['controller' => 'Acompanhamentos', 'action' => 'iniciar', $ordemservico->id], ['class' => 'btn btn-success btn-xs ']), " "; ?> <?= $this->Html->link(__('Interromper'), ['controller' => 'Acompanhamentos', 'action' => 'motivo', $ordemservico->id], ['class' => 'btn btn-warning btn-xs disabled']) ; ?> <?= $this->Html->link(__('Concluir'), ['controller' => 'Acompanhamentos', 'action' => 'concluir', $ordemservico->id], ['class' => 'btn btn-info btn-xs disabled']) ; ?> <?= $this->Html->link(__('Cancelar'), ['controller' => 'Acompanhamentos', 'action' => 'cancelar', $ordemservico->id], ['class' => 'btn btn-danger btn-xs disabled']) ; ?> <?php // $this->Form->postLink(__('Delete'), ['action' => 'delete', $ordemservico->id], ['confirm' => __('Confirm to delete this entry?'), 'class'=>'btn btn-danger btn-xs']) ?> </td> </tr> <?php } ?> </tbody> </table> </div> <!-- /.box-body --> <div class="box-footer clearfix"> <ul class="pagination pagination-sm no-margin pull-right"> <?php // echo $this->Paginator->numbers(); ?> </ul> </div> </div> </div> </div> </section> <?//php pr($ordemservico)?> <!-- /.content --> <?php $this->Html->css([ // 'AdminLTE./plugins/datatables/dataTables.bootstrap', 'https://cdn.datatables.net/v/bs/dt-1.10.15/datatables.min.css', 'https://cdn.datatables.net/colreorder/1.3.3/css/colReorder.bootstrap.min.css', //Adicionado 'https://cdn.datatables.net/select/1.2.2/css/select.bootstrap.min.css', //adicionado] // 'https://cdn.datatables.net/responsive/2.1.1/css/responsive.bootstrap.min.css', //adicionado ], ['block' => 'css']); $this->Html->script([ // 'AdminLTE./plugins/datatables/jquery.dataTables.min', 'https://cdn.datatables.net/v/bs/dt-1.10.15/datatables.min.js', 'AdminLTE./plugins/datatables/dataTables.bootstrap.min', 'https://cdn.datatables.net/colreorder/1.3.3/js/dataTables.colReorder.min.js', //adicionado 'https://cdn.datatables.net/select/1.2.2/js/dataTables.select.min.js', //adicionado // 'https://cdn.datatables.net/responsive/2.1.1/js/dataTables.responsive.min.js', //adicionado // 'https://cdn.datatables.net/responsive/2.1.1/js/responsive.bootstrap.min.js', //adicionado ], ['block' => 'script']); ?> <?php $this->start('scriptBotton'); ?> <script> $(document).ready(function () { var table = $('#ordemservicos').DataTable({ "lengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "Todos"]], "pagingType": "full_numbers", "paging": true, "lengthChange": true, "searching": true, "ordering": true, // "dom": 'Bfrtip', // 'buttons': [ // 'print' // ], "info": true, "autoWidth": true, 'pageLength': 5, 'fixedColumns': true, 'colReorder': true, // 'responsive': true, 'select': true, "processing": true, "language": { "lengthMenu": "Mostrando _MENU_ dados por pagina", "zeroRecords": "Sem dados para mostrar", "info": "Mostrando pagina: _PAGE_ de _PAGES_", "infoEmpty": "Nennhum dado encontrado", "infoFiltered": "(filtrado de um total de _MAX_ dados ativos)", "search": "Procurar:", "paginate": { "first": "Primeira", "last": "Ultima", "next": "Próximo", "previous": "Anterior" } }, 'columnDefs': [ {'orderable': false, 'targets': 10} ] }); // $('#ordemservicos tbody').on('click', 'tr', function () { // var data = table.row( this ).data(); // alert( 'testando javascripts '+data[0]+'\' data' ); // } ); }); </script> <?php $this->end(); ?> Add <section class="content-header"> <h1> Cadatro de Ordem De Serviço </h1> <ol class="breadcrumb"> <li> <?= $this->Html->link('<i class="fa fa-dashboard"></i> '.__('Back'), ['action' => 'index'], ['escape' => false]) ?> </li> </ol> </section> <!-- Main content --> <section class="content"> <div class="row"> <!-- left column --> <div class="col-md-12"> <!-- general form elements --> <div class="box box-primary"> <div class="box-header with-border"> <h3 class="box-title">Ordem de Serviço</h3> </div> <!-- /.box-header --> <!-- form start --> <?= $this->Form->create($ordemservico, array('role' => 'form')) ?> <div class="box box-default"> <div class="box-body"> <div class="row"> <div class="col-md-6"> <?php echo $this->Form->input('acompanhamento.id'); ?> <?php echo $this->Form->input('acompanhamento.AcompanhamentoStatus', ['default' => 'Aguardando', 'type' => 'hidden']); ?> <?php echo $this->Form->input('ordemservicos', ['templates' => ['inputContainer' => '<label>Numero da Ordem de Serviço</label> <input name= "ordemservicos" type="text" class="form-control" id="ordemservicos" placeholder="Enter com numero da OS">' ]]); echo $this->Form->input('ordemservicosContrato', ['templates' => ['inputContainer' => '<label>Contratante</label> <select name= "ordemservicosContrato" class="form-control select2 select2-hidden-accessible" id="ordemservicosContrato" style="width: 100%;" tabindex="-1" aria-hidden="true"> <option selected="selected">Contratante</option> <option value="CLARO">CLARO</option> <option value="FAPEX">FAPEX</option> <option value="MUNDIVOX">MUNDIVOX</option> <option value="TELEFONICA">TELEFONICA</option> <option value="RNP">RNP</option> <option value="TIM">TIM</option> <option value="ENGESET/ALGAR">ENGESET/ALGAR</option> </select>' ]]); /* echo $this->Form->input('ordemservicosContrato', ['templates' => ['inputContainer' => '<label>Contratante</label> <input name= "ordemservicosContrato" type="text" class="form-control" id="ordemservicosContrato" placeholder="Empresa do contrato">' ]]);*/ /*echo $this->Form->input('ordemservicosTipoServico', ['templates' => ['inputContainer' => '<label>Tipo Do Serviço</label> <input name= "ordemservicosTipoServico" type="text" class="form-control" id="ordemservicosTipoServico" placeholder="Especifique o serviço">' ]]);*/ echo $this->Form->input('ordemservicosTipoServico', ['templates' => ['inputContainer' => '<label>Tipo de Serviço</label> <select name= "ordemservicosTipoServico" class="form-control select2 select2-hidden-accessible" id="ordemservicosTipoServico" style="width: 100%;" tabindex="-1" aria-hidden="true"> <option selected="selected">Tipo de Serviços</option> <option value="Projeto">Projeto</option> <option value="Projeto Ad. Eletrica">Projeto Ad. Eletrica</option> <option value="Construção de Rede">Construção de Rede</option> <option value="Manutenção de Rede">Manutenção de Rede</option> <option value="Amario GPON">Amario GPON</option> <option value="Ativação">Ativação</option> <option value="Construção de Infra">Construção de Infra</option> <option value="Construção Backbone">Construção Backbone</option> </select>' ]]); echo $this->Form->input('ordemservicosDescServico', ['templates' => ['inputContainer' => '<label>Descrição do Serviço</label> <textarea name= "ordemservicosDescServico" type="text"class="form-control" rows="3" placeholder="Descrição...." id="ordemservicosDescServico"> </textarea>' ]]); echo $this->Form->input('ordemservicosOçamentoPrev', ['templates' => ['inputContainer' => '<label>Valor Prev</label> <input name= "ordemservicosOçamentoPrev" type="text" class="form-control" id="ordemservicosOçamentoPrev" placeholder="Valor Previsto do serviço">' ]]); echo $this->Form->input('ordemservicosData', ['empty' => true, 'default' => '']); /*echo $this->Form->datePicker('ordemservicosData', [array('languge' => 'ptBR')]);*/ /*echo $this->Form->input('ordemservicosData',['templates' => ['inputContainer' => '<label>Data da Ordem de Serviço</label> <input name= "ordemservicosData" class="form-control pull-right" data-provide="datemask" placeholder="" id="datemask">' ]]);*/ /* echo $this->Form->input('ordemservicosData', ['class' => 'form-control pull-right','data-provide' => "datepicker", 'type' => 'text', 'format' => 'd-m-Y', 'default' => date('d-m-Y'), 'value' => !empty($item->date) ? $item->date->format('d-m-Y') : date('Y-m-d')]);*/ echo $this->Form->input('ordemservicosInicioPrev', ['empty' => true, 'default' => '']); echo $this->Form->input('ordemservicosConclusaoPrev', ['empty' => true, 'default' => '']);;?> </div> <div class="col-md-6"> <?php echo $this->Form->input('ordemservicosUf', ['templates' => ['inputContainer' => '<label>UF</label> <select name= "ordemservicosUf" class="form-control select2 select2-hidden-accessible" id="ordemservicosUf" style="width: 100%;" tabindex="-1" aria-hidden="true"> <option selected="selected">Estado</option> <option value="AC">Acre</option> <option value="AL">Alagoas</option> <option value="AP">Amapá</option> <option value="AM">Amazonas</option> <option value="BA">Bahia</option> <option value="CE">Ceará</option> <option value="DF">Distrito Federal</option> <option value="ES">Espírito Santo</option> <option value="GO">Goiás</option> <option value="MA">Maranhão</option> <option value="MT">Mato Grosso</option> <option value="MS">Mato Grosso do Sul</option> <option value="MG">Minas Gerais</option> <option value="PA">Pará</option> <option value="PB">Paraíba</option> <option value="PR">Paraná</option> <option value="PE">Pernambuco</option> <option value="PI">Piauí</option> <option value="RJ">Rio de Janeiro</option> <option value="RN">Rio Grande do Norte</option> <option value="RS">Rio Grande do Sul</option> <option value="RO">Rondônia</option> <option value="RR">Roraima</option> <option value="SC">Santa Catarina</option> <option value="SP">São Paulo</option> <option value="SE">Sergipe</option> <option value="TO">Tocantins</option> </select>' ]]); echo $this->Form->input('ordemservicosClienteFinal', ['templates' => ['inputContainer' => '<label>Cliente Final</label> <input name= "ordemservicosClienteFinal" type="text" class="form-control" id="ordemservicosClienteFinal" placeholder="Cliente de Execução do Seviço">' ]]); /* echo $this->Form->input('ordemservicosUf', ['templates' => ['inputContainer' => '<label>Cliente Final</label> <input name= "ordemservicosUf" type="text" class="form-control" id="ordemservicosUf" placeholder="Cliente de Execução do Seviço">' ]]);*/ echo $this->Form->input('ordemservicosCidade', ['templates' => ['inputContainer' => '<label>Cidade De Execução</label> <input name= "ordemservicosCidade" type="text" class="form-control" id="ordemservicosCidade" placeholder="Cidade de Execução">' ]]); echo $this->Form->input('ordemservicosCidade', ['templates' => ['inputContainer' => '<label>Responsavel/Cliente</label> <input name= "ordemservicosResponsavelAcomp" type="text" class="form-control" id="ordemservicosResponsavelAcomp" placeholder="Responsavel pelo acompanhamento">' ]]); echo $this->Form->input('ordemservicostecnologia', ['templates' => ['inputContainer' => '<label>Tipo de Serviço</label> <select name= "ordemservicostecnologia" class="form-control select2 select2-hidden-accessible" id="ordemservicostecnologia" style="width: 100%;" tabindex="-1" aria-hidden="true"> <option selected="selected">Tecnologia</option> <option value="Rede Metalica">Rede Metalica</option> <option value="Rede Optica">Rede Optica</option> <option value="Radio Satelite">Radio Satelite</option> <option value="Infra Estrutura">Infra Estrutura</option> <option value="HFC">HFC</option> </select>' ]]); /* echo $this->Form->input('ordemservicostecnologia', ['templates' => ['inputContainer' => '<label>Tecnologia</label> <input name= "ordemservicostecnologia" type="text" class="form-control" id="ordemservicostecnologia" placeholder="Tecnologia">' ]]);*/ ?> </div> </div> </div> </div> <!-- /.box-body --> <div class="box-footer"> <?= $this->Form->button(__('Save')) ?> </div> <?= $this->Form->end() ?> </div> </div> </div> <?php echo $this->element('tabela'); ?> </section> <?php $this->Html->css([ 'AdminLTE./plugins/daterangepicker/daterangepicker-bs3', 'AdminLTE./plugins/iCheck/all', 'AdminLTE./plugins/datepicker/datepicker3', 'AdminLTE./plugins/colorpicker/bootstrap-colorpicker.min', 'AdminLTE./plugins/timepicker/bootstrap-timepicker.min', 'AdminLTE./plugins/select2/select2.min', ], ['block' => 'css']); $this->Html->script([ 'AdminLTE./plugins/select2/select2.full.min', 'AdminLTE./plugins/input-mask/jquery.inputmask', 'AdminLTE./plugins/input-mask/jquery.inputmask.date.extensions', 'AdminLTE./plugins/input-mask/jquery.inputmask.extensions', 'https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.2/moment.min.js', 'AdminLTE./plugins/datepicker/bootstrap-datepicker', 'AdminLTE./plugins/daterangepicker/daterangepicker', 'AdminLTE./plugins/colorpicker/bootstrap-colorpicker.min', 'AdminLTE./plugins/timepicker/bootstrap-timepicker.min', 'AdminLTE./plugins/iCheck/icheck.min', ], ['block' => 'script']); ?> <?php $this->start('scriptBotton'); ?> <script> $(function () { //Initialize Select2 Elements $(".select2").select2(); //Datemask dd/mm/yyyy $("#datemask").inputmask("dd-mm-yyyy", {"placeholder": "dd/mm/yyyy"}); //Datemask2 mm/dd/yyyy $("#datemask2").inputmask("mm/dd/yyyy", {"placeholder": "mm/dd/yyyy"}); //Money Euro $("[data-mask]").inputmask(); //Date picker // $(document).ready(function(){ // $('#datepicker).click(function(){ // $("#datepicker").datepicker( // { // dateFormat: 'yy-mm-dd', // onSelect: function(dateText, inst){ // $('#select_date').val(dateText); // $("#datepicker").datepicker("destroy"); // } // } // ); // }); // }); $('#datepicker').datepicker({ }); //Date range picker $('#reservation').daterangepicker(); //Date range picker with time picker $('#reservationtime').daterangepicker({timePicker: true, timePickerIncrement: 30, format: 'MM/DD/YYYY h:mm A'}); //Date range as a button $('#daterange-btn').daterangepicker( { ranges: { 'Today': [moment(), moment()], 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 'Last 7 Days': [moment().subtract(6, 'days'), moment()], 'Last 30 Days': [moment().subtract(29, 'days'), moment()], 'This Month': [moment().startOf('month'), moment().endOf('month')], 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] }, startDate: moment().subtract(29, 'days'), endDate: moment() }, function (start, end) { $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY')); } ); //iCheck for checkbox and radio inputs $('input[type="checkbox"].minimal, input[type="radio"].minimal').iCheck({ checkboxClass: 'icheckbox_minimal-blue', radioClass: 'iradio_minimal-blue' }); //Red color scheme for iCheck $('input[type="checkbox"].minimal-red, input[type="radio"].minimal-red').iCheck({ checkboxClass: 'icheckbox_minimal-red', radioClass: 'iradio_minimal-red' }); //Flat red color scheme for iCheck $('input[type="checkbox"].flat-red, input[type="radio"].flat-red').iCheck({ checkboxClass: 'icheckbox_flat-green', radioClass: 'iradio_flat-green' }); //Colorpicker $(".my-colorpicker1").colorpicker(); //color picker with addon $(".my-colorpicker2").colorpicker(); //Timepicker $(".timepicker").timepicker({ showInputs: false }); }); </script> <?php $this->end(); ?>

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!