分类在CakePHP中查看

时间:2010-04-12 08:44:56

标签: cakephp content-management-system

按照介绍cakephp教程创建博客,我创建了一个数据库来查看,添加/编辑/删除业务。每个企业都有一个与之相关的州或省,我想知道我将如何生成一个列出所有州的页面,例如/州和一个页面就像/ states / california并列出所有的业务加利福尼亚。

目前我现在只有一个页面列出了所有商家。想知道我将如何设计模型/控制器/视图和路线来处理这个问题。无法在网上找到详细阐述的消息来源,或者我只是不知道如何看待。

1 个答案:

答案 0 :(得分:0)

由于你是新手,我认为从HABTM关系开始并不是一个好主意,这是你在问题中所需要的,也是最复杂的关系。所以我假设你的模型关系是一个更简单的一个:hasMany。例如如下:

/*this is  your state model
 *state table in database should like:id,name
 *and business table in database:id,name,state_id
 */
class State extends AppModel
{
    var $name = 'State';
    var $hasMany = array(
        'Business'=>array(
                'className'=>'Business',
                'foreignKey'=>'state_id',
                )
);   //this means a State can hasMany Businesses while a Business only belongs to one State

}

然后在状态控制器中执行操作:

 /*in your state controller*/
 function showBusinessesByState($statename)
 {
     if($statename && $thestate = $this->State->findByName($statename))
     {
         $this->set('state',$thestate);//debug $thestate you'll find data you need
     }
     else
     {
         $this->Session->setFlash("something wrong happens!");
     }
 }

现在我认为你可以自己处理视图文件,使用$state变量来检索数据$thestate,其中还包含一个企业列表。

现在在/app/config/routes.php中执行路由部分:

Router::connect('/states/*',array('controller'=>'states','action' => 'showBusinessesByState'));

完成后,您可以通过/states/somestate获得所需内容。当您完成此操作时,您可以尝试以最佳方式解决此问题 - hasAndBelongsToMany