Теги PyroCMS в массивах
Я использую CodeIgniter с PyroCMS в своей работе в качестве разработчика сайта. Некоторые коллеги, которые использовали Pyro гораздо дольше, чем я, часто используют теги Pyro. Они кажутся чрезвычайно полезными, даже если я не имею понятия, как они работают. Во всяком случае, я пытался использовать теги в массиве PHP, но Pyro, похоже, не нравится.
Код в вопросе:
{{ eods }}
<tr>
<td value="{{ user_id }}" class = "span1">{{ user_id }}</td>
<td value="{{ eod }}" class = "span2">{{ eod }}</td>
<td value="{{ mit_id }}" class = "span2"><?php echo $this->db->get_where('mit', array('id' => {{ mit_id }})); ?></td>
<td value="{{ date }}" class = "span2">{{ date }}</td>
<td value="{{ time }}" class = "span2">{{ time }}</td>
</tr>
{{ /eods }}
Я получаю ошибку:
Ошибка разбора: синтаксическая ошибка, неожиданный '{' в C:\repos\mit-eod\addons\shared_addons\modules\mit\views\history.php в строке 48
Ошибка находится в строке с кодом php (строка 5) в выражении PHP echo. Я могу подтвердить, что это третья фигурная скобка на линии, первая в {{ mit_id }}
,
Почему это происходит?
1 ответ
Вы не можете использовать теги в коде PHP, так как код PHP будет сначала интерпретироваться как код PHP, а не как часть шаблона. Вы должны выполнить логику в вашем контроллере или модели и передать все, что вы получаете из БД в переменной $ eods, в шаблон.
Также,
<?php echo $this->db->get_where('mit', array('id' => $thing)); ?>
получит MySQL (вероятно) результат, а не одно значение. Вам по крайней мере нужно сделать что-то вроде:
$var = $this->db->get_where('mit', array('id' => $thing))->row()->thing;
но это приведет к ошибке, если строки не найдены. Соединение MySQL может быть лучше.
Удачи.