-
Conteúdo Similar
-
Por Frank K Hosaka
Ontem de madrugada encontrei essa dica javascript - How do I get the value of the selected item in a datalist using pure JS? - Stack Overflow e com ele eu consegui terminar o meu código de paginação. O Laravel já tem um código pronto para ser usado, mas ele é funcional para uma tabela com 150 itens, o meu tem mais de 1500 itens, isso iria entupir a apresentação com um monte de guias. O meu só tem duas guias, o próximo e o anterior. E só lista 10 itens de cada vez.
O mais bacana dessa madrugada é que eu aprendi a usar um pouco mais a função console.log( ) do JavaScript, procurei exaustivamente uma maneira de obter o número do item da option do datalist, mas foi em vão. A dica que eu encontrei na internet é muito engenhosa, o rapaz encontrou no JavaScript uma função que procura um atributo da option que foi selecionada. Como o option não tem a opção de index, ele sugere criar uma.
No Controller eu havia pedido para o Laravel trabalhar com os produtos em ordem alfabética, ou seja, a própria consulta já é um index. O único problema foi encontrar um jeito de colocar o index da consulta no option do datalist.
Com quase tudo resolvido, o problema é fazer o loop do JavaScript funcionar. Graças ao fórum iMasters ou Script Brasil eu consegui uma ajuda. Eu recebi a sugestão de garantir que uma das variáveis dentro do loop do JavaScript seja do tipo inteiro. Eu achei a sugestão um absurdo, mas depois eu lembrei que o mundo dos computadores é bem diferente das abstrações que a gente inventou como os números inteiros e os números reais.
Finalmente, aqui está o código. Ele foi escrito em Blade PHP, não é muito diferente do PHP: a diferença é que ele usa @ ao invés do tradicional <?php >. Nesse projeto pretendo trabalhar com o Bootstrap. Já o class="w600" não é Bootstrap, e sim uma gambiarra que eu fiz onde .w600 {width=600px}. Na imagem que eu deixei, dá para ver que eu ajuntei o nome do produto junto com o código dele, a minha ideia é para o usuário procurar o produto tanto pelo nome bem como pelo código. O datalist é muito bacana, pena que não dá para alterar a fonte e nem fazer a busca semelhante, ou seja, se você digitar "limão", ele não lista se foi cadastrado "limao".
@include('menu') <script> var icontrole document.title='Produto';btmenu.innerHTML='Procurar produto por nome' function controle(comando){ if(comando=="proximo"){ if(icontrole<produtos.options.length){icontrole+=10;show(icontrole)}} if(comando=="anterior"){ if(icontrole>9){icontrole-=10;show(icontrole)}}} function lista(input){ option=Array.prototype.find.call(produto.list.options,function(option){ return option.value === input}) show(option.getAttribute("id"))} function show(j){ j=parseInt(j) divshow.innerHTML="" for(i=j;i<=j+9;i++){ divshow.innerHTML+=produtos.options[i].value+"<br>"} produto.value="" icontrole=j} </script> <div class="w600 m-auto"> <input list=produtos autofocus id=produto onchange=lista(value)> <datalist id=produtos> @foreach($prod as $key=> $pr) <option id={{$key}}>{{$pr->prod}} [{{$pr->codprod}}] @endforeach </datalist></div> <div class="w600 m-auto" id=divshow></div> @if(empty($show)) <script>show(0)</script> @php $show="já começou" @endphp @endif <div class="w600 m-auto"> <input type=submit value=Anterior onclick="controle('anterior')"> <input type=submit value=Próximo onclick="controle('proximo')"> </div>
-
Por ckcesar
Pesoal eu instalei o Laravel em meu pc, mais ao rodar estou enfrentando um erro de permissão.
Eu segui os passas da documentação => https://laravel.com/docs/9.x#getting-started-on-windows
Ao entrar no localhost ele retorna esse erro. A lembrando que no docker ele inicial certinho o mysql roda ok, é somente essa pasta storege. Estou tentando resolver mais tudo que eu faço não funfa, estou dando permissão nas pastas, já mudei o arquivo .env e nada.
The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log"
-
Por joeythai
Boa tarde pessoal,
Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
<code>
public function getBillsUnpaid($date)
{
$results = [];
$numberBills = $this->lotModel->select(DB::RAW("
Lotes.ID AS Lote_ID,
Compradores.ID as Comprador_ID,
Compradores.CompradorWeb_ID,
Compradores.NM as NM_Comprador,
Lotes.Leilao_ID as Leilao_ID,
Lotes.NU as NU_Lote,
FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
REPLACE(
(CASE
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
LTRIM(RTRIM(Compradores.NM_Celular))
)
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
LTRIM(RTRIM(Compradores.NM_Telefone))
)
ELSE ''
END)
,'-', '') AS NM_Celular,
Lotes.VL_Venda,
ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) as VL_Pago,
CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
"))
->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
->where('Lotes.ST_Lote', 3)
->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
->whereRaw("
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = Lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) = 0")
->orderBy('Lotes.NU')
->take(10)
->get();
if(count($numberBills) > 0){
foreach($numberBills as $bills){
$results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
$results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
$results['VL_Cobranca'] = $bills->VL_Cobranca;
$results['Lote_ID'] = $bills->Lote_ID;
$results['Comprador_ID'] = $bills->Comprador_ID;
$results['NM_Comprador'] = $bills->NM_Comprador;
$results['NM_Descricao'] = $bills->NM_Descricao;
$results['VL_Pago'] = $bills->VL_Pago;
$results['NU_Lote'] = $bills->NU_Lote;
$results['Leilao_ID'] = $bills->Leilao_ID;
$phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
$results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
return $results;
}
}
}
</code>
Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
-
Por joeythai
Boa tarde pessoal,
Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
<code>
public function getBillsUnpaid($date)
{
$results = [];
$numberBills = $this->lotModel->select(DB::RAW("
Lotes.ID AS Lote_ID,
Compradores.ID as Comprador_ID,
Compradores.CompradorWeb_ID,
Compradores.NM as NM_Comprador,
Lotes.Leilao_ID as Leilao_ID,
Lotes.NU as NU_Lote,
FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
REPLACE(
(CASE
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
LTRIM(RTRIM(Compradores.NM_Celular))
)
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
LTRIM(RTRIM(Compradores.NM_Telefone))
)
ELSE ''
END)
,'-', '') AS NM_Celular,
Lotes.VL_Venda,
ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) as VL_Pago,
CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
"))
->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
->where('Lotes.ST_Lote', 3)
->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
->whereRaw("
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = Lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) = 0")
->orderBy('Lotes.NU')
->take(10)
->get();
if(count($numberBills) > 0){
foreach($numberBills as $bills){
$results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
$results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
$results['VL_Cobranca'] = $bills->VL_Cobranca;
$results['Lote_ID'] = $bills->Lote_ID;
$results['Comprador_ID'] = $bills->Comprador_ID;
$results['NM_Comprador'] = $bills->NM_Comprador;
$results['NM_Descricao'] = $bills->NM_Descricao;
$results['VL_Pago'] = $bills->VL_Pago;
$results['NU_Lote'] = $bills->NU_Lote;
$results['Leilao_ID'] = $bills->Leilao_ID;
$phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
$results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
return $results;
}
}
}
</code>
Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
-
Por fernandomullerjr
Oi Pessoal,
bom dia.
Estou tentando obter os logs do Laravel através do stdout do meu Container PHP, mas quando eu simulo um erro dentro do Container via php artisan ele não é mostrado no stdout do container:
```
fernando@c64d676157c2:/var/www$ php artisan command5
Command "command5" is not defined.
fernando@c64d676157c2:/var/www$
```
O erro é escrito no log do Laravel:
```
fernando@c64d676157c2:/var/www$ tail storage/logs/laravel.log
"}
[2022-02-22 12:43:52] dev.ERROR: Command "command5" is not defined. {"exception":"[object] (Symfony\\Component\\Console\\Exception\\CommandNotFoundException(code: 0): Command \"command5\" is not defined. at /var/www/vendor/symfony/console/Application.php:644)
[stacktrace]
#0 /var/www/vendor/symfony/console/Application.php(228): Symfony\\Component\\Console\\Application->find('command5')
#1 /var/www/vendor/symfony/console/Application.php(140): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#2 /var/www/vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#3 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#4 /var/www/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#5 {main}
"}
fernando@c64d676157c2:/var/www$
```
Mas o erro não é mostrado no stdout do Container PHP:
```
fernando@notebookdell-1487 /lab/treinamento/travellist-laravel-demo main docker logs -f travellist-app SIGINT(2) ↵ 10345 09:44:30
[22-Feb-2022 12:40:57] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[22-Feb-2022 12:40:57] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[22-Feb-2022 12:40:57] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[22-Feb-2022 12:40:57] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[22-Feb-2022 12:40:57] NOTICE: fpm is running, pid 1
[22-Feb-2022 12:40:57] NOTICE: ready to handle connections
```
Eu tentei diversas combinações de configurações do php.ini file, config/logging.php, LOG_CHANNEL do ".env", diversas opções de configuração do stack e muito mais.
Eu estou usando o PHP na versão 7.4.28.
laravel/framework v7.11.0
Composer version 2.2.6
**O projeto foi clonado do Github:**
https://github.com/do-community/travellist-laravel-demo
Todos os containers estão up e rodando conforme o esperado:
```
fernando@notebookdell-1487 /lab/treinamento/travellist-laravel-demo main docker container ls 10344 09:40:58
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c64d676157c2 travellist "docker-php-entrypoi…" 5 seconds ago Up 3 seconds 9000/tcp travellist-app
2995a82595f7 mysql:5.7 "docker-entrypoint.s…" 5 seconds ago Up 3 seconds 3306/tcp, 33060/tcp travellist-db
736ede87e337 nginx:alpine "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:8000->80/tcp, :::8000->80/tcp travellist-nginx
fernando@notebookdell-1487 /lab/treinamento/travellist-laravel-demo main 10345 09:41:01
```
Como eu posso obter os logs do Laravel através do stdout do meu container no Docker?
-