Теги 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 может быть лучше.

Удачи.

Другие вопросы по тегам