Consegui montar o gráfico mais sem Controller, como usar um Controller nesse caso ???

[Finalizado Pelo Aluno]

Darcio Fernandes Criador 07/01/2021
Darcio Fernandes

Bom dia Carlos, estou trabalhando com o Laravel 8 a agora já é Chartisan segundo link abaixo:

https://charts.erik.cat/guide/

Eu consegui montar o gráfico, esta aí a minha rota:
//Reports ...
    Route::get('reports/months', function() {
        return view('admin.charts.chart');
    });

Mais eu queria passar uma controller, como faria ???

Falo assim porque nas controllers é que trabalhamos com as models e passamos dados para views, no seu cenário você monta o gráfico dentro da controller eu já monto dentro do próprio arquivo de gráfico conforme link que te mandei ...

Manager Carlos Ferreira 07/01/2021
Carlos Ferreira

Olá, Darcio!
Tudo bem?

Não entendi muito bem essa parte "eu já monto dentro do próprio arquivo de gráfico"

Criou o gráfico (os dados do gráfico) na view?
Se sim, não é uma boa, as views não deve ter lógica.

--------

Para usar um controller pode fazer assim:
use App\Http\Controllers\NomeController;

Route::get('reports/months', [NomeController::class, 'nomeMetodoDoController']);

Criador Darcio Fernandes 10/01/2021
Darcio Fernandes

Assim Carlos, essas linhas aqui ohhh ...

return Chartisan::build()
            ->labels(['JAN''FEV''MAR'])
            ->dataset('2018', [101869])
            ->dataset('2019', [121416]);

Estas montam o gráfico, mais não estão numa controller como você ensina ...

São montadas dentro de um arquivo chamado:

C:\xampp\htdocs\projetos\repositories\app\Charts\MonthsChart.php

Veja:

<?php

declare(strict_types = 1);

namespace App\Charts;

use Chartisan\PHP\Chartisan;
use ConsoleTVs\Charts\BaseChart;
use Illuminate\Http\Request;

class MonthsChart extends BaseChart
{
    public ?string $name = 'custom_chart_name';
    public ?string $routeName = 'admin/reports/months';
    public ?string $prefix = 'some_prefix';
    public ?array $middlewares = ['auth'];
 
    public function handler(Request $request): Chartisan
    {
        return Chartisan::build()
            ->labels(['JAN''FEV''MAR'])
            ->dataset('2018', [101869])
            ->dataset('2019', [121416]);
    }
}

 

Manager Carlos Ferreira 11/01/2021
Carlos Ferreira

Olá, Darcio!

Entendi amigo, na realidade essa também é uma boa opção, porque deixa bem organizado o código, e os charts ficam em classes isoladas (services).

Pode manter assim, e quando precisa pegar dados, pode usar um repository ou o model direto, já dentro do service (suas classes de chart).

Criador Darcio Fernandes 11/01/2021
Darcio Fernandes

Perfeito, se é que entendi nesse caso então "específico"... Nós só trocamos um controller por um service como você disse ok ???

Se sim, sem erros e já pode finalizar o Ticket ...

 

Obs: desculpas aí, acho que sou um dos seus alunos que mais fica fazendo perguntas ...

Deus te abençoe mais e mais não só pela paciência, prestatividade e disponibilidade de sempre !!!

Abraço

Manager Carlos Ferreira 12/01/2021
Carlos Ferreira

Isso mesmo. Finalizando o ticket, conta comigo!

Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!