2015-03-09 3 views
0

У меня есть панель «Последние сотрудники», где он должен отображать моих недавно добавленных пользователей. Все, что у меня есть, это статическое отображение этих пользователей:Yii2 Показать Недавно добавленные Участники

<div class="box box-danger <?= !User::isBizAdmin() ? 'hidden' : '' ?>"> 
    <div class="box-header with-border"> 
     <h3 class="box-title">Latest Staff Members</h3> 
     <div class="box-tools pull-right"> 
     <span class="label label-danger">8 New Members</span> 
     <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button> 
     <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button> 
     </div> 
    </div><!-- /.box-header --> 
    <div class="box-body no-padding"> 
     <ul class="users-list clearfix"> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/frank_man-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Alexander Pierce</a> 
      <span class="users-list-date">Today</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/Ben_man-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Norman</a> 
      <span class="users-list-date">Yesterday</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/iri_girl_face-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Jane</a> 
      <span class="users-list-date">12 Jan</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/Jay_man-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">John</a> 
      <span class="users-list-date">12 Jan</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/Fred_man-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Alexander</a> 
      <span class="users-list-date">13 Jan</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/michela_face_young-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Sarah</a> 
      <span class="users-list-date">14 Jan</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/carla_girl-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Nora</a> 
      <span class="users-list-date">15 Jan</span> 
     </li> 
     <li> 
      <img src="https://cdn2.iconfinder.com/data/icons/avatar-2/512/hena_woman_face-128.png" alt="User Image"/> 
      <a class="users-list-name" href="#">Nadia</a> 
      <span class="users-list-date">15 Jan</span> 
     </li> 
     </ul><!-- /.users-list --> 
    </div><!-- /.box-body --> 
    <div class="box-footer text-center"> 
     <a href="javascript::" class="uppercase">View All Users</a> 
    </div><!-- /.box-footer --> 
</div> 

Что-то в этом роде. Теперь в таблице user в моей базе данных я добавил столбец date_added, и я вручную помещал даты в строку.

Записываю ли данные? Или использовать виджет? Я не знаю, как еще я должен это реализовать.

EDIT

Мой контроллер:

public function actionIndex() 
{ 
    if(Yii::$app->user->isGuest){ 
     return $this->render('../site/index'); 
    } 
    else{ 
     $latestStaffMembers = User::find()->orderBy(['date_added' => SORT_DESC])->limit(8); 
     return $this->render('dashboard', [ 
      'latestStaffMembers' => $latestStaffMembers, 
     ]); 
    }   
} 

На мой взгляд:

<?php foreach ($latestStaffMembers as $user) { ?> 
    <li> 
     <img src="<?php echo $user->avatar; ?>" alt="User Image"/> 
     <a href="#"><?= $user->username ?></a> 
     <span ><?= $user->date_added ?></span> 
    </li> 
<?php } ?> 

Тогда я получаю эту ошибку:

Trying to get property of non-object

Я попробовал var-dumping $user, и он говорит null.

+0

Вы можете получить быстрое решение, если бы вы создали контроллер, модель и представление с помощью gii. Вам нужна только таблица, и все будет сгенерировано. После поколения вам нужно будет адаптироваться к возможностям. По крайней мере, у вас должен быть класс модели, расширенный от ActiveRecord. – robsch

+0

привет. У меня уже есть система, и я уже прошел ее. теперь я застрял в этой проблеме. – kaynewilder

+0

Какая у вас проблема? Получение пользователей из модели? Отображение их в поле зрения? Это должен быть только показатель получения подходящих пользовательских моделей объектов, а затем их отображение с помощью цикла или GridView. Не могли бы вы обновить свой пост, чтобы показать нам, что у вас уже есть, и что вам не хватает? – robsch

ответ

1

Я не уверен, что это то, что вы хотите. Надеюсь, это поможет.

В вашем действии контроллера:

$latestStaffMembers = User::find()->orderBy(['date_added' => SORT_DESC])->limit(8)->all(); 
return $this->render('some-view-file', [ 
    'latestStaffMembers' => $latestStaffMembers, 
]); 

На ваш взгляд:

<?php foreach ($latestStaffMembers as $user) { ?> 
    <li> 
     <img src="<?= $user->imagePath ?>" alt="User Image"/> 
     <a class="users-list-name" href="#"><?= $user->name ?></a> 
     <span class="users-list-date"><?= Yii::$app->formatter->asDate($user->dateAdded, 'd m'); ?></span> 
    </li> 
<?php } ?> 

Btw: Я видел !User::isBizAdmin() в вашем коде. Это твое? Я бы просто не скрывал список, если важно, чтобы это видели только администраторы. Просто не печатайте его, если пользователь не является администратором.

+0

Спасибо! Будете пытаться это сейчас. И да '! User :: isBizAdmin()' принадлежит мне. Только пользователи BizAdmin могут видеть панель «Последние сотрудники». – kaynewilder

+0

Я получил эту ошибку 'Попытка получить свойство не-объекта' в этой строке:' formatter-> asDate ($ user-> date_added, 'd m'); ?> ' – kaynewilder

+0

Hm ... Вы можете вывести' $ user-> dateAdded' напрямую, без форматирования даты (вы можете добавить это позже). Правильно ли это имя? DateAdded? $ lastStaffMembers, а затем $ user установлен? – robsch

Смежные вопросы