2 часа "*екса" и гугла не увенчались успехом.
Готовлю данные для ChartJS, массив данные формирую в контроллере (laravel) и отправляю во view где и инийиализирую ChartJS
Код контроллера:
foreach ($report_current as $stock) {
if(empty($stock['statistic'])) continue; //У стока нет статистики
foreach ($stock['statistic'] as $report) {
$activity['sale_current'] += $report['order'];
$activity['money_current'] += $report['money'];
$activity['chart_labels'][] = $stock['name_stock'];
$activity['sale_chart_data'][] = $report['order'];
$activity['money_chart_data'][] = $report['money'];
$activity['chart_colors'][] = $stock['color_stock']; //Разобраться с quot
//var_dump($sale);die;
}
}
$stock['color_stock'] хранится в бд как строка - #323546
Ок, отправил, так как $activity['chart_colors'] это массив с массивами, я привожу его к JSON строке
(вся эта лапша для наглядности)
$bc = $activity['chart_colors'];
$bc = json_encode($bc);
//$bc = implode(',', $bc);
//$bc = json_encode($activity['chart_colors'], JSON_HEX_QUOT);
//$bc = preg_replace('"', 'zaeb', $bc);
//$bc = preg_quote($bc);
// $bc = htmlentities($bc);
//$bc = htmlspecialchars_decode($bc);
//var_dump($bc); die;
Потом вставляю данные в JS
var ctxx = document.getElementById('pie').getContext('2d');
var myDoughnutChart = new Chart(ctxx, {
type: 'pie',
data: {
datasets: [
{
data: {{ json_encode($activity['sale_chart_data']) }},
backgroundColor: {{$bc}} -- сюда
,
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
}
});
И JS не может распарсить скрипт из за: Uncaught SyntaxError: Unexpected token '&'.
так выглядит сформированный JS в консоли
datasets: [
{
data: [545,56,76,55,33],
backgroundColor: ["#ff0000","#00ff00","#9bfc94","#a99dcc","#eeb363"]
,
}]
А чтобы все было ОК надо вид такой: ['#453545','#5453545'] - и т.д.
Что делал:
1) preg_quote()
2) preg_replace()
3) htmlspecialchars_decode() и флаги ставил
4) Пробовал implode() и конкатенацию с кавычками чтобы получить просто нужную мне строку.
Такое ощущение что в PHP переменной этих спец символов нет, а при переходе в JS все КАВЫЧКИ преобразуются в спец символы.