我在尝试让我的蛋糕应用程序根据页面的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');
}
任何帮助都将不胜感激。
答案 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