author smarty

 
Посетитель
no avatar
Сообщений: 5
Есть переданный массив объектов в шаблон для smarty.
Код PHP:
  1. $msgs = $model->getMessages();
  2. $smarty->assign('msgs', $msgs);
  3. $smarty->assign('is_admin', $is_admin);
  4.  
Шаблон
Код PHP:
  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, но у меня это поле тоже есть и при запросе, оно выводится.
Извиняюсь, если где то не внимательно, прочитал, но битый час не могу понять, как вывести автора :)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
goodwin, покажите SQL запрос, там должно использоваться JOIN что бы соединить user_id и nickname
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Реклама
cms
Посетитель
no avatar
Сообщений: 5
Evanescence:

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

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

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

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

Шаблон из примера:
Код PHP:
  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>
Редактировалось: 3 раз (Последний: 6 января 2014 в 13:18)
Посетитель
no avatar
Сообщений: 5
Если ошибка в руководстве, то тогда ладно будем использовать JOIN :)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Код PHP:
  1.  
  2. $sql = "SELECT i.nickname, g.* FROM cms_users i
  3. INNER JOIN cms_guestbook g ON g.user_id = i.id";
  4.  
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
no avatar
Сообщений: 5
Evanescence:

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

Спасибо, я знаком с sql и уже сделал через join :)
Меня интересовало именно момент этот в описание разработки компонента в руководстве. По коду просто подумал, что двиг сам при наличие поля user_id добавлял в smarty переменные с инфой о пользователе. А получается это просто ошибка в руководстве :)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 754
В руководстве есть строки :
Примечание: В данный момент функция getMessages() имеет простейший вид - в ней не предусмотрено разбиение на страницы, выборки сообщений от конкретной даты и конкретного автора. Эти возможности мы добавим в следующей части данного руководства. Сейчас наша задача изучить общие принципы.
Какие ошибки?
Редактировалось: 3 раз (Последний: 6 января 2014 в 19:52)
Посетитель
no avatar
Сообщений: 5
Да не обратил внимания. Все же стоило, если уж начинать с простого, то приводить код исключительно для простого примера без кусков из другой части руководства. smile

Всем спасибо за подсказку! smile
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: