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