Yii2 - список всех сообщений - ошибка кодирования

Я новичок в Yii2, и я сделал сайт, где я могу писать посты, просматривать их, удалять и т.д...

Я хочу перечислить каждое сообщение из БД на одной странице как «хронологию».

Мой код не содержит ошибок, просто показывает только самую первую запись.

Вот мой код из (просмотров) index.php

        <?php

use yii\helpers\Html;
use yii\widgets\ListView;

/* @var $this yii\web\View */
/* @var $searchModel frontend\models\search\TweetSearch */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'My tweets';

?>
<div class="tweet-model-index">

    <h1 class="text-center"><?= Html::encode($this->title) ?></h1>


    <p class="text-center">
        <?= Html::a('New Tweet', ['create'], ['class' => 'btn btn-success']) ?>
    </p>

    <?php

    $con = \Yii::$app->db;

    $sql = $con->createCommand("SELECT * FROM tweet ORDER BY created_at DESC");

    $tweets = $sql->queryAll();

    if(!$tweets)
        echo '<h2> This is empty </h2>';
     else{
           foreach($tweets as $tweet){
       ?>



    <hr>
    <div class="container-fluid">
        <div class="col-md-8 col-md-offset-2">
            <h2 class="text-left">
                <?php echo $tweet['tweet_title']; ?> 
                <br><small>Author: <b><?php echo $tweet['author_id'];?> </b>Created at: <b><?php echo date(($tweet['created_at']));?></b>
                    <br>Updated at: <b><?php echo date(($tweet['updated_at']));?>
                </small>
            </h2>

                <p class="text-left">
                <?= Html::a('Update', ['update', 'id' => $tweet['tweet_id']], ['class' => 'btn btn-primary']) ?>
                <?= Html::a('View', ['view', 'id' => $tweet['tweet_id']], ['class' => 'btn btn-primary']) ?>
                <?= Html::a('Delete', ['delete', 'id' => $tweet['tweet_id']], [
                                        'class' => 'btn btn-danger',
                                        'data' => [
                                        'confirm' => 'Are you sure you want to delete this item?',
                                        'method' => 'post',
                                        ],
                                    ]) ?>
                </p>



        </div>


    </div>

</div>
<?php endforeach; ?>
<?php endif; ?>

Могу я спросить вас, ребята, как я могу считать просмотры на каждом посте?

Я попробовал это на своем TweetController, но не работает.

public function actionView($id)
{
    $this->render('view',array(
        'model'=>$this->loadModel($id));
}

person user65748    schedule 05.12.2017    source источник


Ответы (2)


Начните использовать брекеты!

else
    foreach($tweets as $tweet);
?>

к этому:

else {
    foreach($tweets as $tweet) {
?>

или еще лучше в ПРОСМОТРАХ:

else:
    foreach($tweets as $tweet):
?>

.....
.....

<?php endforeach; ?>
<?php endif; ?>
person Yupik    schedule 05.12.2017
comment
Синтаксическая ошибка Exception ParseError, неожиданный 'endforeach' (T_ENDFOREACH), ожидание конца файла - person user65748; 05.12.2017
comment
обновлено .. я еще немного новичок, но учусь быстро, как могу! - person user65748; 05.12.2017
comment
Вы не изменили первую часть с else: и foreach. : важно. - person Yupik; 05.12.2017
comment
Вот что я пробовал: else: ... foreach: ошибка: неожиданно: else{ foreach{ .... ?› (без ‹?php endforeach; ?› ‹?php endif; ?› в конце)) Ошибка синтаксического анализа неожиданный конец файла В конце: ‹?php endforeach; ?› ‹?php endif; ?› Синтаксическая ошибка ParseError, неожиданный 'endforeach' (T_ENDFOREACH), ожидается конец файла - person user65748; 05.12.2017
comment
Если вы используете версию {, вам нужно закрыть if и foreach на <?php } ?>, а не на <?php endif; ?>, то же самое для foreach. - person Yupik; 05.12.2017
comment
О Боже мой. Большое спасибо. Это тоже приятно знать! я чувствую себя немым прямо сейчас. - person user65748; 05.12.2017

обновление от

$tweets = $sql->query();

to

$tweets = $sql->queryAll();
person K.K    schedule 05.12.2017
comment
Не работает. Все еще перечисляю первый пост. Когда я удаляю это, оно показывает следующее. Но не все на одной странице. - person user65748; 05.12.2017