Функция Route Controller для файла welcome.blade - PullRequest
0 голосов
/ 30 сентября 2019

Я создал функцию для генерации диаграммы в контроллере TestChart.php. Теперь мне нужно вызвать эту функцию в моем файле welcome.blade. но я не знаю, как это сделать. Все, что я получаю, это то, что функция genChart не определена (файл welcome.blade)

Функция genChart - это то, что нужно вызывать в файле welcome.blade

Контроллер (где создается диаграмма):

 public function index()
    {
        $columns = array();
        $charts = array();
        foreach ($columns as $column) {
            $charts[$column] = $this->genChart("ami_demo2018", $column);
        }

        return view('welcome')->with('charts', $charts);
    }


    function genChart($table, $column)
    {
        $labels = Array();
        $data = Array();
        $distinct = DB::select("select distinct `{$column}` FROM `{$table}`");
        $sql = "SELECT ";
        foreach ($distinct as $key => $value) {
            foreach ($value as $key1 => $value1) {
                $sql .= "SUM(case when `{$column}` = '{$value1}' THEN 1 END ) AS `{$value1}`,";
                if (empty($value1)){
                    $value1 = 'Niet ingevuld';
                }
                    array_push($labels, $value1);
            }
        }
        $sql = rtrim($sql, ',');
        $sql .= " From {$table}";

        $result = DB::select($sql);
        foreach ($result as $row) {
            foreach ($row as $column => $value) {
                array_push($data, (int)$value);
            }
        }


        $chart = new chart();
        $chart->labels($labels);
        $chart->dataset('First Dataset', "bar", $data);

        return $chart;
    }

файл welcome.blade (где я хочу вызвать функцию genChart):

    <?php
    if(isset($_GET['submit'])){
        $selected_val = $_GET['select'];
        genChart($table, $selected_val);
    }
    ?>
</div>
<div id="container">
    @foreach($charts as $chart)
        {!! $chart->container() !!}
        {!! $chart->script() !!}
    @endforeach
</div>

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Вы используете $this->getChart() и определяете его как нормальную функцию. Вам нужно будет определить его как функцию класса.

Изменить:

function genChart($table, $column)

To:

public function getChart($table, $column)

Это определит его как функцию / метод класса.

0 голосов
/ 30 сентября 2019

Сначала напишите маршрут в web.php

Route::post('/getChart/{table}/{selected_val}',ControllerName@genChart)->name('genChart');

После этого в блейд-файле при отправке напишите маршрут

route('genChart',['table'=>$table,'selected_val'=>$selected_val])

Сделайте вашу функцию genChart общедоступной для доступа ...

i.e public function genChart()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...