Как преобразовать php код в функцию в js и передать эту функцию в content += 'cюда'
Не опытен, учусь еще, строго не судите. Искал в инете чет не нашел, видимо не правильно вопрос сформировал.
Есть php код который в html вывожу.
<td style="text-align:center" align="center" valign="middle">
<? if ($katts->status == 0): ?>
<span title="Включить" class="icon icon-eye-closekatts status-checker" data-id="<?php echo $katts->id ?>"></span>
<? else: ?>
<span title="Отключить" class="icon icon-eye-openkatts status-checker" data-id="<?php echo $katts->id ?>"></span>
<? endif ?>
</td>
Как его переделать для js функции.
closeOpenKatts: function(d) {
},
Далее, я хочу эту функцию задействовать в этом коде.
buildKattss: function(d) {
let content = '';
$.each(d, function(index, value) {
content += '<tr data-id="' + value.id + '" id="' + value.id + '" class"' + ((value.status == 0) ? 'status-offcatts' : '') + '">';
content += '<td style="text-align:center" align="center" valign="middle">';
content += 'сюда функцию closeOpenKatts';
content += '</td>';
content += '</tr>';
});
$('table#kattss-list tbody').html(content);
},
На странице контент подгружаю через ajax, там table, вот хочу добавить одну функцию и знаю что на прямую в content += ''; вставить php нельзя и для этого надо делать функцию в js, чтобы передать php в функцию и далее эту функцию в content += ''; мне сказали так надо делать.
Ответы (3 шт):
Если функция объявляется в html коде, а не подключается в js файле, то делайте так:
closeOpenKatts: function(d) {
return "<?= "something"; ?>"
},
сделайте метод render, который будет по входным данным генерить строку.
function render(value){
let sCls = value.status ? "status-offcats" : '',
title = value.status ? "выкл" : "вкл",
iCls = value.status ? "openkatts" : "closekatts";
return `<tr data-id="${value.id}" id="{value.id}" class="${sCls}">
<td class="middle-class">
<span title="${title}" class="icon icon-eye-${iCls}
status-checker" data-id="${value.id}"></span>
</td>
</tr>`;
}
и метод, который будет вызывать это к набору полученных данных
let content = d.map(v => render(v)).join('');
$("#target").html(content);
Если целиком на стороне сервера верстку генерить, то
$("#target tbody").load("/path/to/render.php");
Вот и решение подкатило. Помог решить задачу: teran
buildKattss: function(d) {
function render(value) {
let sCls = value.status == 0 ? "status-offcatts" : "",
title = value.status == 0 ? "Отключить" : "Включить",
iCls = value.status == 0 ? "closecatts" : "opencatts";
return `<tr data-id="${value.id}" id="${value.id}" class="${sCls}">
<td style="text-align:center" align="center" valign="middle">
<span title="${title}" class="icon icon-eye-${iCls} status-checker" data-id="${value.id}"></span>
</td>
</tr>`;
}
let content = Object.values(d).map(v => render(v)).join('');
$('table#kattss-list tbody').html(content);
},