Todas Atividades
Atualizada automaticamente
- Yesterday
-
Marius7710 começou a seguir Baclinks para a indústria de apostas esportivas
-
obrigado pela informação!
-
Gurleen Nayar alterou sua foto pessoal
-
AA Trailer se registrou na comunidade
-
Suvidha começou a seguir Suvidha Travels – Your Trusted Tour Operator in Patna
-
Suvidha Travels – Your Trusted Tour Operator in Patna
uma questão postou Suvidha Tutoriais & Dicas - PHP
Suvidha Travels is a premier tour operator in Patna, committed to delivering seamless, enriching, and unforgettable travel experiences across Bihar and beyond. With in-depth knowledge of the region’s culture, history, and hidden gems, we specialize in crafting customized tour packages that cater to every traveler's interests — from spiritual pilgrimages and heritage walks to weekend escapes and family vacations. Our comprehensive travel services include hotel reservations, comfortable transportation, knowledgeable local guides, and full end-to-end itinerary planning. Whether you're uncovering Patna’s historical charm or embarking on a spiritual journey to Bodh Gaya, Rajgir, or Nalanda, Suvidha Travels ensures every moment is well-planned, comfortable, and memorable. Explore Bihar with confidence — choose Suvidha Travels, your dependable travel companion for a truly meaningful journey. -
Suvidha se registrou na comunidade
-
saurabh shukla se registrou na comunidade
-
Lion Bet se registrou na comunidade
-
Jono Paul se registrou na comunidade
-
Model Furniture Mart se registrou na comunidade
-
Arjun Dev se registrou na comunidade
-
Jaimru CRM começou a seguir Who is the best travel CRM in India?
-
Enter Jaimru CRM—the game-changing solution tailored specifically as the best travel CRM software for agencies, tour operators, and travel consultants. To make something modern in style or methods, Jaimru CRM is a comprehensive customer relationship management (CRM) system that centralizes all aspects of customer engagement.
-
Jaimru CRM se registrou na comunidade
- Última semana
-
Remorque Québec se registrou na comunidade
-
Siddh Software se registrou na comunidade
-
problema em atualizar o pythom para a verção 3.10.18 (sou leigo em programação)
pergunta respondeu ao Vinicius Laguardia de Vinicius Laguardia em Python
Eu estava enfrentando um problema com o PyInstaller, por isso o Copilot me recomendou usar a versão 3.10.18. No fim das contas, acabei resolvendo o problema usando o cx_Freeze. Na verdade, meu conhecimento em programação é quase zero, então não sei explicar os detalhes com precisão — só estava procurando algo para passar o tempo. -
problema em atualizar o pythom para a verção 3.10.18 (sou leigo em programação)
pergunta respondeu ao Vinicius Laguardia de ArteEN em Python
site oficial, aba de downloads, esta lá já conferi https://www.python.org/downloads/ não sei como é seu codigo ou arquivos, mas tenho duvidas se mudar a versão irá influenciar nisso -
Estou utilizando o Copilot para auxiliar na programação, porém estou enfrentando dificuldades para fazer múltiplos arquivos funcionarem corretamente em conjunto. O Copilot recomendou a utilização do Python na versão 3.10.18, mas não consegui localizar o instalador dessa versão nem no site oficial nem no repositório do GitHub. Gostaria de saber onde posso encontrar esse instalador.
-
Khopal Free Classified alterou sua foto pessoal
-
Luna Kalix alterou sua foto pessoal
- Mais Cedo
-
Nsibal alterou sua foto pessoal
-
Sandro Seibt começou a seguir Erro em consulta união
-
Tenho consultas união funcionando no Access (Office 365) mas não consigo criar novas consultas do mesmo tipo. Até se copio o código SQL e colo em uma nova consulta dá o mesmo erro exibido na imagem que anexei. Na imagem está um exemplo de consulta união onde peguei apenas dois campos com o mesmo nome provenientes de tabelas diferentes. Nas consultas que estão funcionando, após o final da instrução da primeira parte da consulta existe o sinal ";", contrariando a instrução da MS, mas se tiro este sinal gráfico e tento salvar a consulta, também recebo a mesma mensagem de erro.
-
david warner alterou sua foto pessoal
-
Ferrason Andreaa começou a seguir Places Maps
-
Para pegar cada campo específico do endereço (como rua, bairro, cidade, estado) ao usar a API de Autocomplete do Google Maps, o ideal é usar place.address_components ao invés de tentar extrair o texto de Slither io adr_address.
-
Lisa L. Ahn alterou sua foto pessoal
-
Paul Bullion alterou sua foto pessoal
-
Adyanta Ayurveda alterou sua foto pessoal
-
O marcador <flux:checkbox> desenha uma caixa de opção um pouco mais bonita do que o <input type="checkbox"> e só vale a pena utilizar, se você precisar de uma resposta do usuário. O meu caso é diferente, eu preciso mostrar ao usuário qual foi a opção que ele escolheu. Um coisa é pegar a informação e guardar no banco de dados, e outra bem diferente é fazer o caminho inverso. No caso do Livewire temos no componente public $teste e no blade <input type="checkbox" wire:model="teste">, aqui o usuário define a caixa ou a variável $teste define a caixa (mas a variável só pode usar os valores true ou false na versão Livewire 3.0). Já o marcador <flux:checkbox wire:model="teste"> só é útil para pegar a opção do usuário, já o caminho inverso não dá, o Livewire não é capaz de mudar o <flux:checkbox wire:model="teste"> para <flex:checkbox wire:model="teste" checked> quando o $teste está definido para true.
-
Chrome Hearts usa alterou sua foto pessoal
-
Somya Tomar começou a seguir Leon Jhonsan
-
prop users alterou sua foto pessoal
-
leo rasy começou a seguir Minha apresentação
-
No tempo do PHP e Laravel, eu usei o <form> para fazer uma ponte entre o view e o controller, mas no Livewire acredito que o <form> só serve para usar as regras de validação. Em vários tutoriais do Livewire você vai encontrar coisa do tipo unique:user, ou seja, o Livewire vai procurar a informação na tabela user. No meu caso, o nome da minha tabela é tbusuarios. Mesmo que eu tenho colocado a tabela no model User, o código no Livewire só vai funcionar se eu usar unique:tbusuarios. <?php // Teste.php namespace App\Livewire; use Livewire\Component; class Teste extends Component { public $email; function register() { $data=$this->validate(['email'=>'required|email|unique:tbusuarios']); dd("creating a user with email $this->email"); } } ?> <form wire:submit.prevent="register" class="w-25"> <!-- teste.blade.php --> <div class="h-5"></div> <flux:input wire:model="email" /> <div class="h-5"></div> <flux:button type=submit>Register</flux:button> <div class="h-5"></div> @error('email'){{ $message }}@enderror </form>
-
Jatin Singh começou a seguir Python para Data Science e Machine Learning - Curso Completo
-
Eu tentei testar o código que aparece logo no portal do livewire.laravel.com, ao invés de usar a tabela user, eu usei a tabela de produtos, mas o VS Code disse que encontrou um erro por eu não ter definido a propriedade produto no componente. O VS Code tem razão, o portal do Livewire apresenta um péssimo exemplo de programação, aonde deveria ser @foreach($users as $user), o rapaz escreveu $this->users.
-
Alex Uzun começou a seguir Backlinks suspeitos
-
Hoje eu estudei o <wire:loading>, mas nenhum dos exemplos do tutorial funcionou comigo. O único que deu certo foi um que muda a cor de uma opção que foi selecionada: <div wire:click="multiploAtualiza" wire:loading.class="text-red-500" class="text-gray-500 font-semibold"> Atualizar Produtos Vinculados </div>
-
A minha sugestão é usar o comando print_r ao invés do echo: $result=[['CDSCR'=>'RACCORD ASPIRAÇÃO']]; foreach($result as $r) { print_r($r); }
-
Ola Estou a tentar obter dados de uma base de dados DB2 via odbc e obter um objecto json do codigo acima, obtenho o seguinte output. A tabela está bem formatada, graças ao header utilizado. Depois, vou transformar o resultado num array para depois obter um objeto json. Senão converter o array com o mb_convert_encoding, o json_encode devolve um erro, porque é obrigatorio que o argumento esteja em UTF-8. Mas tenho um echo inesperado. Os caracteres à e Ç são substituidod pelo carater ? O que falta Onde está o erro? Obrigado Paulo Frutuoso
-
que bom q deu certo. disponha👍
-
================= // ================= Finalmente eu achei o portal do heroicons.com, e lá achei o ícone da verificação ("check"), e coloquei no Blade assim: <div class="flex mt-2"> <div class=w-[310px]> <input id="codforn" wire:model="codforn" size="3" autofocus placeholder="codforn" onchange="qt.focus()" class="px-2 border-2 rounded py-0" autocomplete="off"> </div> <div class="w-[210px]"> <input id="qt" wire:model="qt" size="2" placeholder="qt" onchange="total.focus()" class="border-2 rounded py-0 text-center" autocomplete="off"> </div> <div class="text-right"> <input id="total" wire:model="total" size="2" placeholder="total" class="border-2 rounded py-0 text-center" autocomplete="off" wire:change="item" onchange="codforn.focus()"> </div> <flux:icon.check wire:click="item" class="ml-4" /> </div> O meu grande problema é que eu não encontrava espaço suficiente para colocar um botão, tentando simular um <button type=submit>, mas tem espaço para colocar um ícone. Graças ao ícone, eu não preciso mais das variáveis $codforn2, $qt2 e $total2, eu simplesmente só vou esvaziar as variáveis $codforn, $qt e $total só depois que elas forem usadas no cadastro do histórico do produto, ou seja, se o usuário ver a mensagem de que o produto não existe, tudo o que ele digitou vai permanecer no painel de entrada de produtos, e depois dele acertar o cadastro de produto, ele só vai ter que apertar o ícone da confirmação mais uma vez.
-
Apesar do Livewire ser uma extensão do Laravel, aqui eu já considero como um novo recurso do PHP, principalmente para um programador eventual como eu que não conseguiu dominar o JavaScript e principalmente o Ajax. Eu tenho uma rotina que dá entrada no estoque, usando o serviço da digitação. Acredito que a grande maioria dos programadores utiliza o serviço de importação do xml para dar entrada no estoque, mas eu não tenho paciência de esperar e assim eu uso uma cópia da confirmação do pedido do fornecedor. No view, eu tenho três entradas: <input wire:model="codfornec">, <input wire:model="qt"> e <input wire:model="total">. Depois que o usuário fornece os dados, o componente procura na tabela de produtos o registro que contém o codfornec que foi digitado, e se encontrar, ele dá a entrada na tabela histórico do produto. O problema é se o componente não conseguir encontrar, aí o componente solta a mensagem "eu não achei" e fica por isso mesmo. O usuário pode abrir uma nova guia e acertar a tabela de produtos, atualizando ou criando um novo registro. Depois ele volta na guia da entrada de produto, e digita tudo de novo. A lei do menor esforço obriga o usuário a reclamar com o programador que não faz sentido digitar tudo de novo, coisa que já foi digitado antes. E ele tem razão. Eu não sei como resolver isso de maneira lógica, mas improvisei essa gambiarra: Eu criei três variáveis públicas: public $codfornec2, $qt2, $total2, e eles foram definidos quando o componente não encontrar o produto, assim: <?php // ... function item() { // ... $aux=tbprod::where('codforn','like',"%$codforn%")->get(); if (count($aux) == 0) { $this->codforn2=$codforn; $this->qt2=$qt; $this->total2=$total; $this->mensagem="Não existe produto com codforn $codforn"; $this->modal=true; return; } A rotina que fecha o modal anula o conteúdo de $codforn, $qt e $total, e assim o usuário vai ver três caixas vazias que ele não quer digitar. Eu mudei a primeira caixa de entrada: <input wire:model="codforn" wire:click="item">, e o método item no componente ficou assim: <?php // ... function item() { if($this->codforn2) { $codforn=$this->codforn2; $qt=$this->qt2; $total=$this->total2; $this->codforn2=$this->qt2=$this->total2=null; } else { if(is_null($this->codforn)) { return; } $codforn = $this->codforn; $qt = $this->qt; $total = deca($this->total); } Essa gambiarra funciona, o problema é como lembrar o usuário de que é possível recuperar a última digitação só com um clique na primeira caixa.
-
Boa noite pessoal! Sou iniciante em javascript gostaria de saber se alguém poderia me ajudar a entender o conceito de funcão com parametros. Minha intenção é a seguinte: Estou tentando pegar o valor digitado no input e passar esse valor para uma função e dentro dessa função armazenar em uma variável que cria um Nó de texto criei um evento de click em um botão e consegui armazenar o valor do input em uma variavel "b" porém quando envio ela como parâmetro retorna um erro dizendo que "b" is not defined, acredito que seja porque ela está definida apenas no escopo da function do evento de click. seguindo esse raciocínio do meu código é possível receber esse valor do input e armazenar em uma variável pra ser usada como um nó de texto? A funcionalidade do código em questão não tem muita importação estou precisando mesmo fixar esse conceito, nesse meu raciocínio é possível passar como parâmetro? // mapeando o input var input = document.querySelector("#input"); // mapeando o botao var btn = document.querySelector("#btn"); //criando evento de click btn.addEventListener("click", function(){ var b = input.value; console.log(b); }) function criaEl(alpha){ var body = document.getElementsByName("body"); var paragrafo = document.createElement("p"); var criaNode = document.createTextNode(alpha); console.log(criaNode); } criaEl(b); // criaEl(input); // criaEl(input.value);
-
Show... muito obrigado pela a sua atenção, deu certo aqui.
-
1. insira os nomes das colunas: insert into cursos (nome, descricao, carga, total_aulas, ano) values etc.. 2.é melhor prática não usar aspas ao inserir valores em colunas numericas; ex: ('Algoritmos', 'Logica de Programacao', 20, 15, '2014'), ('Photoshop', 'Dicas de Photoshop', 10, 8, '2014') etc.
-
Boa noite Estou começando estudar MySQL e ao tentar inserir dados esta dando o seguinte erro "Error Code: 1366. Column count doesn't match value count at row 1, segue a minha tabela create table if not exists cursos( id_curso int not null primary key auto_increment, nome varchar(50) not null unique, descricao text, carga int unsigned, total_aulas int, ano year default '2025' )default charset = utf8; dados que estou tentando inserir: insert into cursos values ('Algoritmos', 'Logica de Programacao', '20', '15', '2014'), ('Photoshop', 'Dicas de Photoshop', '10', '8', '2014'), ('PHP', 'Curso de PHP para iniciantes', '40', '20', '2010'), ('Java', 'Introdução programação Java', '10', '29','2000'), ('MySQL', 'Bando de Dados MySQL', '30', '15', '2016'), ('Word', 'Curso completo de WOrd', '40', '30', '2018'), ('Análise e Desenvolvimento de Sistemas', 'Desenvolvimento de software', '80', '25', '2020'), ('Jogos Digitais', 'Desenvolvimento de jogos', '60', '20', '2021'), ('Engenharia de Software', 'Engenharia de Software', '100', '45', '2021'), ('Gestão da Tecnologia da Informação', 'Gestão da Tecnologia da Informação', '40', '15', '2022'), ('Rede de Computadores', 'Implementação e gerenciamento de redes', '80', '30', '2022'), ('Sistemas para Internet', 'Desenvolvimento para internet', '60', '20', '2021'), ('Ciências de Dados e Análise de Comportamento', 'Analise de dados', '120', '60', '2023'), ('Banco de Dados', 'Desenvovler, administrar banco de dados', '1000', '40', '2024');
-
Bom dia, Gostaria de saber se alguém fez a prova DP-300 recentemente, para me indicar algum material para estudar A empresa que trabalho pegou um projeto e preciso tirar essa certificação o mais rápido possível. Obrigado.
-
Pegando o nome de um arquivo zipado (Simples Nacional)
pergunta respondeu ao Frank K Hosaka de Frank K Hosaka em PHP
A seguir a listagem completa: arquivo app > Models > tbrendabruta.php <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbrendabruta extends Model { use HasFactory; protected $table="tbrendabruta"; protected $fillable=['apuracao','renda']; const UPDATED_AT=null; const CREATED_AT=null; } ?> arquivo app > Livewire > Simples.php <?php namespace App\Livewire; use App\Models\tbrendabruta; use Carbon\Carbon; use DOMDocument; use Livewire\Attributes\Layout; use Livewire\Component; #[Layout('components.layouts.app',['titulo'=>'Estimativa do Simples'])] class Simples extends Component { protected $listeners=['verArquivo']; public $aliquota=7.3, $reducao=5940, $efetiva; // 2a. faixa da tabela do simples no comércio public $comST,$grupos,$modal, $notasFiscais = [],$nfCanceladas = []; public $notasCanceladas,$primeiraNota,$receitasAnteriores,$renda12; public $semST,$somaTotal,$totalDeNotas,$ultimaNota; public $CST,$SST,$TT; public $apuracao,$proxApuracao,$venda; function incluir() { tbrendabruta::create(['apuracao'=>$this->proxApuracao,'renda'=>$this->venda]); $this->modal=true; } function verArquivo($arquivo) { $this->modal=false; $this->apuracao=tbrendabruta::max('apuracao'); $previa=Carbon::createFromFormat('Ym',$this->apuracao); $this->proxApuracao=$previa->addMonth()->format('Ym'); $arquivo=substr($arquivo,0,-4); $diretorio="C:/Users/Frank/Downloads/".$arquivo; $contaArquivos=count(scandir($diretorio))-2; $nfces = scandir($diretorio); $this->notasCanceladas=0; $this->somaTotal=0; $this->comST=0; $this->semST=0; foreach($nfces as $nfce) { if($nfce !== '.' && $nfce !=='..' ) { if(strpos($nfce,'-can') !== false) { $this->nfCanceladas[] = intval(substr($nfce,28,6)); $this->notasCanceladas++; continue; } $numeroNota=intval(substr($nfce,28,6)); if(in_array($numeroNota,$this->nfCanceladas)) { continue; } $this->notasFiscais[]=$numeroNota; $dom = new DOMDocument(); $dom->load("$diretorio/$nfce"); $nfe=$dom->documentElement; if($nfe->getElementsByTagName('vNF')->item(0)) { $somaNF=$nfe->getElementsByTagName('vNF')->item(0)->nodeValue; $this->somaTotal+=$somaNF; $produtos=$nfe->getElementsByTagName('prod'); foreach($produtos as $p) { $cfop=$p->getElementsByTagName('CFOP')->item(0)->nodeValue; $vProd=$p->getElementsByTagName('vProd')->item(0)->nodeValue; $vDesc=0; if($p->getElementsByTagName('vDesc')->item(0)) { $vDesc=$p->getElementsByTagName('vDesc')->item(0)->nodeValue; } if($cfop==5405) { $this->comST += $vProd - $vDesc; } else { $this->semST += $vProd - $vDesc; } } } } } sort($this->notasFiscais); $this->primeiraNota=intval($this->notasFiscais[0]); $this->ultimaNota=intval($this->notasFiscais[$contaArquivos-1]); $this->totalDeNotas=count($this->notasFiscais); $this->receitasAnteriores = tbrendabruta::orderBy('id','desc') ->skip(1)->take(12)->get(); $this->renda12=array_reduce($this->receitasAnteriores->toArray(),function($total,$r) { return $total + $r['renda']; },0); $this->grupos=array_chunk($this->receitasAnteriores->toArray(),3); $this->efetiva=round((($this->renda12*$this->aliquota/100-$this->reducao)/$this->renda12)*100,4); $this->CST=round($this->comST*$this->efetiva/100*(1-34/100),2); $this->SST=round($this->semST*$this->efetiva/100,2); $this->TT=$this->CST+$this->SST; } function mount() { $this->modal=true; } } ?> arquivo resources > views > livewire > simples.blade.php <div> <div class="mt-5"></div> @if($modal) <flux:input type="file" wire:model="zip" label="Escolha um arquivo zipado da Bling já descompactado" onchange="arquivo=event.target.files[0].name; Livewire.dispatch('verArquivo',[arquivo])" /> @else <div class=font-semibold>Estimativa do Simples Nacional {{ $apuracao }}</div> <div class="flex items-center"> Próxima Apuração {{ $proxApuracao }} <div class="w-[200px] ml-2"> <flux:input wire:model="venda" wire:change="incluir" size=xs placeholder="valor da venda"/> </div> </div> <div class=flex> <div>Total de Notas</div> <div class="ml-2">{{$totalDeNotas}}</div> </div> <div class=flex> <div>Notas Canceladas</div> <div class="ml-2 text-right mr-2">{{$notasCanceladas.": ";}}</div> @foreach($nfCanceladas as $n) {{ $n." "}} @endforeach </div> <div class=flex> <div>Primeira Nota</div> <div class="text-right ml-2 font-semibold">{{$primeiraNota}}</div> <div class="ml-5">Última Nota</div> <div class="text-right ml-5 font-semibold">{{$ultimaNota}}</div> </div> @foreach($grupos as $grupo) <div class='flex'> @foreach($grupo as $r) <div class="w-[40px] font-semibold">{{$r['apuracao']}}</div> <div class="w-[100px] text-right mr-5">{{dec($r['renda'])}}</div> @endforeach </div> @endforeach <div class="flex"> <div class="mr-5">Renda 12 meses:</div> <div class="font-semibold">{{dec($renda12)}}</div> </div> <div class="flex"> <div class="w-[130px]">Alíquota Efetiva</div> <div class="w-[320px]">{{"(".dec($renda12)." x ".virgula($aliquota). " % - ".dec($reducao).") / ".dec($renda12)}}</div> <div class="w-[10px]">{{" = "}}</div> <div class="w-[80px] text-right font-semibold">{{ virgula($efetiva)." %" }} </div> </div> <div class=flex> <div class="w-[70px]">Com ST</div> <div class="w-[100px] text-right">{{dec($comST)}}</div> <div class="ml-1 w-[160px]">{{ " x ".virgula($efetiva)." % x (1 - 34%)"}}</div> <div class="w-[10px]">=</div> <div class="w-[100px] font-semibold text-right">{{ dec($CST) }}</div> </div> <div class=flex> <div class="w-[70px]">Sem ST</div> <div class="w-[100px] text-right">{{dec($semST)}}</div> <div class="ml-1 w-[160px]">{{ " x ".virgula($efetiva)." %"}}</div> <div class="w-[10px]">=</div> <div class="w-[100px] font-semibold text-right">{{ dec($SST) }}</div> </div> <div class=flex> <div class="w-[70px]">Total</div> <div class="w-[100px] text-right">{{dec($somaTotal)}}</div> <div class="ml-1 w-[160px]"></div> <div class="w-[10px]">{{ " " }}</div> <div class="w-[100px] font-semibold text-right text-red-700">{{ dec($TT) }}</div> </div> @endif </div> -
Estou tentando criar uma aplicação online com PHP e JavaScript (Ajax) e a API do YouTube. Basicamente, quero que os vídeos do meu canal rodem em uma "SECTION" da minha aplicação. Quando digito o código, previamente cadastrado em banco de dados com as informações do vídeo, e clico em um PLAY o vídeo é carregado na "SECTION" (id=player-on). Na primeira vez, o vídeo aparece e roda perfeitamente, mas se eu digitar outro código, o próximo vídeo não carrega. Tentei retirar "window.addEventListener("load", (event) => {" do JavaScript e criar uma função e chamá-la diretamente no input "PLAY", mas também não funcionou. Ou seja, eu teria que atualizar a pagina toda para poder rodar outro vídeo e isso não é interessante. Alguém poderia ajudar? PÁGINA QUE EU ESCOLHERIA VÍDEO: index.php <script> window.addEventListener("load", (event) => { var botao = document.querySelector("#btn_cantar"); var codigo_musica = document.querySelector("#codigo_musica"); codigoLength = codigo_musica.value.length; botao.addEventListener("click", (event) => { if (codigoLength < 4) { $("#player-on").html(""); console.log("menor"); } if (codigoLength == 4) { primary = { codigo: codigo_musica.value, }; $.ajax({ type: 'post', url: "player.php", data: primary }).done(function(retorno) { $("#player-on").html(retorno); }); } else { alert("É necessário escolhe uma música!"); } }); }); function buscaVideo(input) { codigoLength = input.value.length; primary = { codigo: input.value, }; //SE O TAMANHO DO CODIGO FOR MENOR QUE 4 CARACTARES LIMPA O BOX DE LISTAGEM DE MUSICAS if (codigoLength < 4) { $("#lista_videos").html(""); console.log("menor"); } //SE O TAMANHO DO CODIGO FOR = A 4 CARACTARES CARREGA A PAGINA DE LISTAGEM DE MUSICAS if (codigoLength == 4) { $.ajax({ type: 'post', url: "busca_videos.php", data: primary }).done(function(retorno) { $("#lista_videos").html(retorno); }); } } </script> <section id="start" class="mx-auto py-5 col-2 float-start"> <div class="row"> <label class="col-12 text-center text-white fs-4 my-3">Enter with Code</label> </div> <div class="row"> <div class="col-10 mx-auto text-center"> <input id="codigo_musica" onkeyup="buscaVideo(this)" class="form-control text-center py-1 fs-4 border-5 rounded-5 " maxlength="4" type="text" id="codigo" value="" name="codigo" placeholder="Digite o código da música" autocomplete="off"> <button id="btn_cantar" class="p-3 fs-4 btn btn-primary my-5 rounded-5" type="buttom">PLAY</button> </div> </div> <div class="row"> <!-- SHOWS THE NAME OF THE CHOSEN VIDEO --> <div id="lista_videos" class="col-10 rounded-5 fs-3 bg-white mx-auto border-5 text-center p-2 text-center"> </div> </div> </section> <!-- SHOW THE CHOSEN VIDEO --> <section id="player-on" class="col-10 float-end bg-primary"> </section> PÁGINA QUE SERÁ CARREGADA: <div class="row"> <div class=""> <div id="player"></div> </div> </div> <script> (function() { var player; var height = window.screen.height; var width = window.screen.width; window.onYouTubeIframeAPIReady = function() { player = new YT.Player('player', { height: height, width: width, videoId: '<?= $video["id_video"] ?>', events: { 'onReady': onPlayerReady }, playerVars: { 'playsinline': 1 }, }); // player.getPlayerState(); }; // 4. Executa o play quando o video estiver pronto function onPlayerReady(event) { event.target.playVideo(); } var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); })(); </script> LAYOUT BÁSICO:
-
O tutorial do Livewire afirma que é fácil fazer upload, mas eu só recebi a mensagem de que o upload falhou, no caso do arquivo zipado. Mas eu vi que o <input type=file> pegou o nome do arquivo selecionado. Com a ajuda do Copilot, consegui pegar o nome do arquivo e mandar para o Livewire: arquivo app > Livewire > Simples.php <?php namespace App\Livewire; use Livewire\Component; class Simples extends Component { protected $listeners=['verArquivo']; public function verArquivo($arquivo) { dd($arquivo); } } arquivo resources > views > livewire > simples.blade.php <flux:input type="file" onchange="arquivo=event.target.files[0].name; Livewire.dispatch('verArquivo',[arquivo])" /> Apesar do código ser bem pequeno, isso é resultado de várias tentativas e erros. Foi muita sorte o código JavaScript funcionar, a lista do Copilot era bem maior. Já o Livewire.dispatch, esse deu muito trabalho, a ideia de colocar colchete em torno da variável que contém o nome do arquivo foi pura tentativa erro, não sei como usar o comando dispatch, mas nesse caso, deu certo. Claro que o nome do arquivo não ajuda muito, mas eu espero explorar o diretório que tem o mesmo nome do arquivo zipado. O PHP, o Laravel e o Livewire não gostam de arquivos zipados, mas para trabalhar com arquivo xml, eles não reclamam.
-
Estatísticas dos Fóruns
-
Tópicos152,4k
-
Posts652,3k
-