我正在设计一个人们可以在学校附近看到快餐店的网站。
我希望它能做什么;
在首页我有一些可供选择的学校,然后我点击该学校,然后根据该学校的$ id转到另一页。该页面显示了另一组食物类型(墨西哥,中国)。然后我可以点击一个类别,我希望下一页向我展示与我选择的特定学校相近的特定食物类型。
可能用于此目的的表格设计如下
id | school_id | category_id | food_id
正如您可能知道的那样,每个个人ID都与另一个表格相关联,该表格包含学校名称,类别名称或快餐店/开放时间/电话号码。
我如何实现这一目标?我假设我需要显示如何传递school_id和category_id,然后使用SQL搜索具有这两个ID的条目。
答案 0 :(得分:3)
您可以在网址中传递两个内容...例如: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传递的值非常不安全,在使用它们查询数据库之前必须进行转义/验证。
答案 1 :(得分:0)
假设您希望将您的请求路由到学校控制器的查看功能,您应该使用HTML Helper建立您的链接,如下所示
$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'];
如果您不喜欢网址结构,并希望将其更改为说http://www.example.com/search_school/3/4/以使其更友好,请在routes.php中添加以下行
Router::connect(
'/search_school/:school_id/:category_id',
array('controller' => 'schools', 'action' => 'view'));
Cakephp的美妙之处在于您无需更改任何其他内容,您可以随时更改路由器文件中的URL结构。