在 cakephp 中显示给定类别的项目列表

Posted

技术标签:

【中文标题】在 cakephp 中显示给定类别的项目列表【英文标题】:Show Items list from a given category in cakephp 【发布时间】:2013-11-12 07:08:42 【问题描述】:

我正在使用 cakephp 2.4 开发一个新闻门户。 我有 2 个表格(类别和文章) 现在我想通过这个链接显示给定类别的文章:http://mydomain/category/2

我的类别模型:

class Category extends AppModel 

var $name = 'Category';

var $hasMany = array('Article');
 

我的文章模型:

class Article extends AppModel 
var $name = 'Article';

var $belongsTo = Array('Category');

文章控制器:

class ArticlesController extends AppController 
var $name = 'Articles';

var $scaffold;

function lists()
 
    $this->Article->recursive = 1;
     $myCat = $this->Category->find('all', array('order' => 'Category.id ASC'));
     return $this->Article->lists($myCat);

     

我的类别控制器:

class CategoriesController extends AppController 

var $name = 'Categories';
var $scaffold;

function index()
  
      $this->Category->recursive = 1;
    $this->set('showCat', $this->Category->find('all'));

  

现在我很困惑如何显示http://mydomain/category/2的文章列表

请帮帮我

【问题讨论】:

这个mydomain/category/2 实际上是mydomain/category/index/2。为什么不对文章列表使用新操作? 另外请告诉ArticlesController中list动作的目的是什么? 【参考方案1】:

现在我很困惑如何按 /mydomain/category/2 显示文章列表

在您的类别控制器中

function index($categoryId = null) 
  $this->Category->recursive = 1;
  if ($categoryId) 
    $this->set('articles', $this->Category->Article->find('all', array('conditions' => array('Article.category_id' => $categoryId)));
      

现在,在您的 categories/index.ctp 中,您将有 $articles 可用。

<?php 
if (isset($articles)) 
  //etc etc

【讨论】:

感谢 Guillmo Mansilla 提供的漂亮的 sn-p.... 现在我可以按给定类别显示文章...

以上是关于在 cakephp 中显示给定类别的项目列表的主要内容,如果未能解决你的问题,请参考以下文章

布局中的 CakePHP 动态菜单内容

在页面内显示存档(在下拉列表中)和类别(在下拉列表中)

在 cakephp3 的视图中列出每个类别的文章

在数组列表中按标题显示所有 DVD 对象时遇到问题

Flutter 返回分类选项卡和项目的列表

CakePHP 高级路由