0

我正在设计一个网站,人们可以在其中看到学校附近的快餐店。

我希望它做什么;

在首页上,我有一些学校可供选择,然后单击该学校,然后根据该学校的 $id 转到另一个页面。该页面向我显示了另一组食物类型(墨西哥、中国)的类别。然后我可以单击一个类别,我希望下一页向我显示靠近我选择的特定学校的特定食物类型。

可能会用于此的表是这样设计的

id | school_id | category_id | food_id

正如您可能知道的那样,每个 ID 都与另一个表相关联,该表具有学校名称、类别名称或快餐店/营业时间/电话号码。

我如何实现这一目标?我假设我需要展示如何同时传递 school_id 和 category_id,然后使用 SQL 搜索具有这两个 ID 的条目。

4

2 回答 2

3

您可以在 url 中同时传递...例如:http ://www.example.com?school_id=1&category_id=2

然后在代码中

if(isset($_GET['school_id'])){ $school_id = $_GET['school_id']; }

if(isset($_GET['category_id'])){ $category_id = $_GET['category_id']; }

请记住,通过 URL 传递的值非常不安全,在使用它们查询数据库之前必须对其进行转义/验证。

于 2013-07-20T17:19:51.090 回答
0

假设,您希望将您的请求路由到学校控制器的查看功能,您应该使用 HTML 助手创建链接,如下所示

$this->Html->link('Anchor Text', array('controller' => 'Schools', 'action' => 'view', 'school_id' => $school_id, 'category_id' => $category_id));

这将创建一个类似http://www.example.com/schools/view/school_id:3/category_id:4的链接

您可以使用在学校控制器的查看功能中访问这些值

$school_id = $this->request->params['named']['school_id'];
$category_id = $this->request->params['named']['category_id'];

如果您不喜欢 URL 结构并想将其更改为http://www.example.com/search_school/3/4/以使其对 seo 友好,请在 routes.php 中添加以下行

Router::connect(
  '/search_school/:school_id/:category_id', 
  array('controller' => 'schools', 'action' => 'view'));

Cakephp 的美妙之处在于您无需更改任何其他内容,并且您可以随时更改路由器文件中的 URL 结构。

于 2014-01-01T07:04:06.060 回答