0

我有两个模型:

Book
Category

我有两种看法:

books/browse

在这个视图中有分页的书籍列表,带有排序选项、书籍语言选择、​​作者/标题过滤器等。有一件事没有 - 书籍类别树。事实上,该控制器将 category_id 作为参数,并仅显示该类别中的书籍。

categories/tree

此视图(控制器)找到类别树,它需要一个参数 -> category_id -> 来确定如何打印树(以显示所有父节点和父列表等)。

现在我需要一个视图(例如浏览树),其中左侧有类别树,右侧有书籍列表(包含所有内容)。

实现这一目标的最佳解决方案是什么?(问题还在于我希望能够使用所有参数(category_id 参数 + 排序 + 一些用于过滤的 GET 参数)保存书籍浏览视图的链接,而且我也不想重写任何视图或控制器方法。 .

- - - - - - - 编辑

好的,我在元素 categorytree 中有我的树,它看起来像这样:

$params = $this->requestAction('/categories/tree/'.$category_id); 
print_category($params['tree'][0],$params['parents'],$category_id);

$category_id 作为参数传递给元素。这是在 /books/browse 里面:

<?php echo $this->element('categorytree', array("category_id" => $category_id)); ?>

我需要的是,在 categorytree 元素中,我希望每个树节点都是 /books/browse 的有效链接,该链接基于从中加载书籍/浏览的当前 url。我的意思是网址可能是:

books/browse/34/sort:asc/page:4?author=Author&something=something

我可以在 /books/browse/... 视图中获取此链接并将其传递给元素,然后对其进行解析以将 /34/ (它的类别 ID)替换为其他类别...但是有没有更简单/更优雅的方式这样做?

4

1 回答 1

1

将您的类别树放在一个元素中,并使用CakePHP 的 requestAction从 Category 控制器获取它的数据。

您可以将树视图保留在 Books 区域(这是有道理的,因为这是用户正在浏览的内容) - 取决于您将其放入哪个视图。

归根结底,用户正在搜索书籍,因此视图和代码应该位于此处。使用类别树只传递一个变量,用于在查询中针对书籍使用哪个类别。

于 2012-04-24T19:57:47.767 回答