A mágica do Livewire é a variável pública do componente e a diretriz wire:model no Blade, mas essa ferramenta não funciona no caso do arquivo zipado pela Bling onde contém todas as notas emitidas no mês, nesse caso eu tenho que imaginar o componente como um controlador e o Blade como o terminal do cliente. A minha primeira tentativa foi usar o <form method=post> para fazer uma ponte entre o Blade e o controlador, mas no caso do Livewire descobri que ele tem o recurso do escutador, ou seja, eu usei o JavaScript para capturar o nome do arquivo obtido através do <input> e a seguir mandar a informação para o componente, assim:
<flux:inputtype="file"label="Escolha um arquivo zipado da Bling já descompactado"onchange="arquivo=event.target.files[0].name;Livewire.dispatch('verArquivo',[arquivo])"/>
O constrangimento começa aqui. O <input> no Livewire escreve "escolha o arquivo" e fica por isso mesmo, já o <flux:input> desenha um botão com a frase "choose a file" e uma outra caixa escrito algo do tipo "No files", ele é bonito, mas tudo escrito em inglês.
Aqui, outro constrangimento. Já que eu não posso abrir o arquivo zipado, eu peço para o Windows descompactar o arquivo, e peço para o código usar scandir e ver o conteúdo da pasta. O problema é que o Livewire, o Laravel e o PHP não podem ver o conteúdo do notebook a partir da internet, só o <input> é capaz de fazer essa proeza, mas o <input> só é capaz de pegar no máximo 20 arquivos (o Copilot disse que isso é uma restrição do servidor).
Assim, eu preciso executar o programa lá na internet para gravar o faturamento do mês no banco de dados, depois eu importo o banco de dados MySQL aqui no notebook, e finalmente executo o código localmente para finalmente ter a previsão do Simples. Eu acho que esse é o pior exemplo de programa, tudo porque eu não consigo usar o ZipArchive do PHP com o arquivo zipado da Bling.
Pergunta
Frank K Hosaka
A mágica do Livewire é a variável pública do componente e a diretriz wire:model no Blade, mas essa ferramenta não funciona no caso do arquivo zipado pela Bling onde contém todas as notas emitidas no mês, nesse caso eu tenho que imaginar o componente como um controlador e o Blade como o terminal do cliente. A minha primeira tentativa foi usar o <form method=post> para fazer uma ponte entre o Blade e o controlador, mas no caso do Livewire descobri que ele tem o recurso do escutador, ou seja, eu usei o JavaScript para capturar o nome do arquivo obtido através do <input> e a seguir mandar a informação para o componente, assim:
O constrangimento começa aqui. O <input> no Livewire escreve "escolha o arquivo" e fica por isso mesmo, já o <flux:input> desenha um botão com a frase "choose a file" e uma outra caixa escrito algo do tipo "No files", ele é bonito, mas tudo escrito em inglês.
Do lado do componente, tenho
protected $listeners=['verArquivo']; function verArquivo($arquivo) { $this->modal=false; $arquivo=substr($arquivo,0,-4); $diretorio="C:/Users/Frank/Downloads/".$arquivo; $contaArquivos=count(scandir($diretorio))-2; $nfces = scandir($diretorio); // etc }
Aqui, outro constrangimento. Já que eu não posso abrir o arquivo zipado, eu peço para o Windows descompactar o arquivo, e peço para o código usar scandir e ver o conteúdo da pasta. O problema é que o Livewire, o Laravel e o PHP não podem ver o conteúdo do notebook a partir da internet, só o <input> é capaz de fazer essa proeza, mas o <input> só é capaz de pegar no máximo 20 arquivos (o Copilot disse que isso é uma restrição do servidor).
Assim, eu preciso executar o programa lá na internet para gravar o faturamento do mês no banco de dados, depois eu importo o banco de dados MySQL aqui no notebook, e finalmente executo o código localmente para finalmente ter a previsão do Simples. Eu acho que esse é o pior exemplo de programa, tudo porque eu não consigo usar o ZipArchive do PHP com o arquivo zipado da Bling.
A seguir a listagem completa de toda a gambiarra:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.