CakePHP Как получить все категории с соответствующими статьями и отобразить в статьях :: Индекс - PullRequest
1 голос
/ 11 июня 2011

Я хотел бы получить список всех категорий с соответствующими сообщениями (ограничение 10) и отобразить его в действии / представлении «Индекс» моего контроллера статей. У меня уже есть контроллеры «Статьи» и «Категории».

Я хотел бы иметь что-то похожее на то, что CNN.com внизу страницы.

Каков наилучший подход? Не могли бы вы привести примеры кода?

Большое спасибо,

Андре С.

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Вот как я смог решить это.Если у кого-то есть лучший подход, пожалуйста, дайте мне знать.Спасибо!

Это мой файл Index.ctp Просмотр статей

<div id="bottom_section" class="article_bottom_section">
<?php
    foreach ($categories as $category){
?>
<div>
    <div>
        <?php echo $category['Category']['title'];?>
    </div>
    <div>
        <?php
            echo $this->element(
                'category_relatedarticles',
            array(
            'categoryID' => $category['Category']['id']
            )
        );
        ?>
    </div>
</div>
<?php
    }
?>
</div>

Тогда мое действие индекса в контроллере статей

  $categories = $this->Article->Category->find(
            'all',
            array(
                'fields' => array(
                    'Category.id',
                    'Category.title'
                ),
                'order' => 'Category.id DESC',
                'recursive' => 1
            )
        );

    $this->set('categories');

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

2 голосов
/ 12 июня 2011

Вы можете использовать (кэшированный) элемент и действие запроса;поскольку маловероятно, что категории сильно изменились бы.

// views/elements/categories.ctp 
$categories= $this->requestAction('/categories/get_categories');
echo '<ul>';
foreach($categories as $category) {
    echo '<li>' . $category['Category']['name'] . '</li>';
}
echo '</ul>';


// in your layout
echo $this->element('categories', array('cache' => '+1 hour'));

Приведенный выше пример потребует настройки;но ты должен понять.Вы можете получить доступ к любым данным, которые вам нравятся, используя действие запроса;но это может привести к снижению производительности - поэтому рекомендуется кэширование.

См. документы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...