author smarty

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 6 января 2014 в 12:51
Есть переданный массив объектов в шаблон для smarty.
  1. $msgs = $model->getMessages();
  2. $smarty->assign('msgs', $msgs);
  3. $smarty->assign('is_admin', $is_admin);
  4.  
Шаблон
  1. {foreach key=id item=msg from=$msgs}
  2. <div class="msg">
  3. <p>Заголовок: {$msg.title}</p>
  4. <p>{$msg.content}</p>
  5. <p><small>Автор: {$msg.author} | Дата: {$msg.date}</small></p>
  6. </div>
  7. {/foreach}
В шаблоне получаю весь массив и вывожу через цикл, все поля выводятся, кроме author.
Каким образом выводится author? В руководстве на примере "Сообщений" единственное, что относится к автору — это табличное значение user_id, но у меня это поле тоже есть и при запросе, оно выводится.
Извиняюсь, если где то не внимательно, прочитал, но битый час не могу понять, как вывести автора :)
#2 6 января 2014 в 12:59
goodwin, покажите SQL запрос, там должно использоваться JOIN что бы соединить user_id и nickname
#3 6 января 2014 в 13:16


goodwin, покажите SQL запрос, там должно использоваться JOIN что бы соединить user_id и nickname

Evanescence

Я по руководству вообще понял, что можно без запроса получить информацию о пользователе, зная его id.

В руководстве запрос идет простой без join
  1. $sql = "SELECT id,
  2. title,
  3. message,
  4. user_id,
  5. pubdate
  6. FROM cms_guestbook";
Я тоже простой делал руководствуясь информацией в доке.

Я поэтому и спрашиваю, что в примере нет запросов c join, но в конце в шаблоне выводится

Шаблон из примера:
  1. <h1 class="con_heading">Гостевая книга</h1>
  2.  
  3. <div class="messages">
  4.  
  5. {foreach key=id item=message from=$messages}
  6. <div class="message">
  7. <p><strong>{$message.title}</strong></p>
  8. <p>{$message.message}</p>
  9. <p><small>Автор: {$message.author} | Дата: {$message.pubdate}</small></p>
  10.  
  11. {if $is_admin}
  12. <p><a href="/guestbook/delete{$message.id}.html">Удалить сообщение</a></p>
  13. {/if}
  14. </div>
  15. {/foreach}
  16.  
  17. </div>
  18. <p><a href="/guestbook/add.html">Добавить сообщение</a></p>
#4 6 января 2014 в 13:23
Если ошибка в руководстве, то тогда ладно будем использовать JOIN :)
#5 6 января 2014 в 13:56
  1.  
  2. $sql = "SELECT i.nickname, g.* FROM cms_users i
  3. INNER JOIN cms_guestbook g ON g.user_id = i.id";
  4.  
#6 6 января 2014 в 16:25


  1.  
  2. $sql = "SELECT i.nickname, g.* FROM cms_users i
  3. INNER JOIN cms_guestbook g ON g.user_id = i.id";
  4.  

Evanescence

Спасибо, я знаком с sql и уже сделал через join :)
Меня интересовало именно момент этот в описание разработки компонента в руководстве. По коду просто подумал, что двиг сам при наличие поля user_id добавлял в smarty переменные с инфой о пользователе. А получается это просто ошибка в руководстве :)
#7 6 января 2014 в 19:32
В руководстве есть строки :

Примечание: В данный момент функция getMessages() имеет простейший вид — в ней не предусмотрено разбиение на страницы, выборки сообщений от конкретной даты и конкретного автора. Эти возможности мы добавим в следующей части данного руководства. Сейчас наша задача изучить общие принципы.

Какие ошибки?
#8 8 января 2014 в 17:44
Да не обратил внимания. Все же стоило, если уж начинать с простого, то приводить код исключительно для простого примера без кусков из другой части руководства. smile

Всем спасибо за подсказку! smile
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.