如何从一个类别中获取项目列表以在单个页面上显示cakephp

时间:2013-12-03 15:19:28

标签: php cakephp cakephp-appmodel cakephp-routing

我在尝试让我的蛋糕应用程序根据页面的URL在单个页面上显示数据库中的项目时遇到问题...例如,我想显示“Party”类别中的项目在地址栏中键入“mydomain.com/All/party”,我会在该页面上获得该类别中所有项目的列表。

这是我的代码,但我从路线获取的页面是空白的:

我的routes.php:

    Router::connect('/categories/:name', array(
   'controller' => 'All', 'action' => 'categories'
),
array(
    'pass' => 'catname',
    'catname' => '[a-zA-Z0-9]+'
));

我的AllController.php:

    function categories($catname = null) {
$options = array(
    'conditions' => array('Category.name'=>$catname)
);
$Category = $this->Category->find('all', $options);
$this->set('Category', $Category);
$this ->render('/All/categories');
}

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

我没有得到您刚刚发布的所有代码,但您想要实现的目标非常简单:

Router::connect(
    '/products/:category', 
    ['controller' => 'products', 'action' => 'categorized'], 
    ['pass' => ['category']]
);

在ProductsController中:

function categorized($category) {
    $conditions = ['Category.name' => $category];
    $this->set('products', $this->Prodcut->find('all', compact('conditions')));
}

就是这样。如果您不需要单独的视图模板,则可能需要重用索引操作,在这种情况下,只需设置条件(例如,设置为Paginator组件)并调用$this->setAction('index')

答案 1 :(得分:0)

我找到了一种更简单的方法来做我想做的事情。我只记得我有一个数据库搜索选项,允许人们搜索产品和类别。我所做的只是搜索类别,然后复制我获得的页面的URL,并将其设置为我的应用程序中的类别的链接。

示例代码:

<ul class="filter-options">
  <li><a style="color:#fff" href="http://mydomain.com/products/search?q=parties">Parties</a></li>
  <li><a style="color:#fff" href="http://mydomain.com/products/search?q=festivals">Festivals</a></li>
  <li><a style="color:#fff" href="http://mydomain.com/products/search?q=theatres">Cinemas/Theatres</a></li>

答案 2 :(得分:0)

一切看起来都不错,只需更改你的routes.php如下

QString