View Yii中的回调操作处理程序

View Yii中的回调操作处理程序,view,event-handling,controller,yii,action,View,Event Handling,Controller,Yii,Action,我的问题是: 我开发了一个网站,用户可以自己添加内容。 该内容通过要从数据库中提取的id和/或别名获取标识符。目标不是为包含该内容的每个页面创建视图和控制器。我们不应该为他们寻找那些。相反,我们在actionIndex()中处理URL,获取定义适当内容的URL部分,并进一步将其加载到模板中。 例如: 我们有一个主要的产品板块。其观点是: /views/Products/index.php 我们有一个控制器: ProductsController扩展控制器 我们有一个默认方法actionIndex

我的问题是: 我开发了一个网站,用户可以自己添加内容。 该内容通过要从数据库中提取的id和/或别名获取标识符。目标不是为包含该内容的每个页面创建视图和控制器。我们不应该为他们寻找那些。相反,我们在actionIndex()中处理URL,获取定义适当内容的URL部分,并进一步将其加载到模板中。 例如:

  • 我们有一个主要的产品板块。其观点是:

    /views/Products/index.php

  • 我们有一个控制器:

    ProductsController扩展控制器

  • 我们有一个默认方法actionIndex()

  • 所以当我们得到这样的URL时:

    /mysite/Products/some_product_alias
    
    …我们应该在actionIndex()中处理它,这样它就不会将我们指向404页面,而是通过别名“some_product_alias”获取数据,并将其加载到产品模板中(我想应该是/views/products/index.php或其他页面)。 同时,它需要为静态页面定义控制器/操作方法,静态页面是站点的主要部分,是主菜单。 也就是说,它应该这样工作: 若它能在控制器中找到一个现有的actionMethod,它就调用它。如果找不到,它将在数据库中查找从URL提取的别名。若它存在于那个里,那个么它获取数据并将其加载到模板中。 当然,这项任务是可以管理的,但不幸的是,我是Yii的新手,仍然不知道如何做:(
    我将非常感谢您的帮助!

    您应该查阅Yii文档,了解如何将找到的路线参数化

    其要点是,您必须修改主配置文件,并将此路由映射为controller/{alias},而不是controller/action,而是controller/{alias},并使用默认的视图操作,以便在以下几行中:

      'rules'=>array(
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      ),
    
    “规则”=>数组(
    “/”=>“/视图”,
    ),
    
    这将映射一条路径,如Products/15,以使用action Products/view,并将GET参数id设置为15

    答案(其第一部分)几乎已经给出。 但这里有必要补充一些东西。 1.我们应该在urlManager中设置别名规则(是!):


    在此之后,我们可以处理事件以从数据库获取数据。

    谢谢!但这里还有一个问题。我在问题中补充了一个问题:谢谢你的回答!但有一件事需要澄清。我在问题中补充了以下内容:*******************************************同时需要保留为静态页面定义控制器/操作方法的可能性s是站点的主要部分,是主菜单。也就是说,它应该是这样工作的:如果它能在controller中找到一个现有的actionMethod,它就调用它。如果它找不到它,它会寻找从DB中的URL提取的别名。如果它存在,它会获取数据并将其加载到模板中。**************再次感谢您!
    Product/<alias:\w+>' =>  'product/index'
    
    function actionIndes($alias){
       ...handle event...
    }