控制器¶
概述¶
控制器负责对用户请求采取行动(大致遵循MVC元模式的术语)。
以下控制器在CubicWeb的机箱外提供。我们按类别列出它们。它们都是在 (cubicweb.web.views.basecontrollers
)
Browsing :
视图控制器与CubicWeb应用程序中的大多数浏览操作关联:它始终实例化 TheMainTemplate 并让结果集/视图调度系统构建整个内容;它处理
ObjectNotFound
和NoSelectableObject
以最终用户友好的方式冒泡到其入口点的错误(但其他编程错误会溜过去)jsonpcontroller是
ViewController
它提供了 jsonp 服务。填充可以用指定callback
请求参数。只有 JSONE出口 / ejsone出口 可以使用视图。如果另一个vid
已指定,它将被忽略并替换为 JSONE出口 .请求匿名,避免返回敏感数据,降低CSRF攻击风险;登录/注销控制器发出有效的用户登录或注销请求。
Edition :
编辑控制器(请参见 这个 edit controller )处理CRUD操作以响应提交的表单;它与表单紧密关联,并将一些工作委托给表单。
这个
Form validator controller
使用编辑控制器从Ajax上下文提供表单验证,以实现经典的表单处理循环(用户编辑、点击 submit/apply ,通过表单验证器控制器进行服务器端验证,并且用户界面用全局或每个字段的故障信息进行修饰,直到其有效为止)
Other :
这个
SendMail controller
(web/views/basecontrollers.py)负责发送电子邮件通知mailbugreport控制器(web/views/basecontrollers.py)允许快速 reportbug 应用程序中的特征
the
cubicweb.web.views.ajaxcontroller.AjaxController
(cubicweb.web.views.ajaxcontroller
) provides services for Ajax calls, typically using JSON as a serialization format for input, and sometimes using either JSON or XML for output. See 阿贾克斯 chapter for more information.
登记处¶
所有控制器(应该)都位于全局注册表中的“控制器”命名空间中。
混凝土控制器¶
大多数API细节应该通过源代码检查来解决,因为不同的控制器有不同的目标。例如,请参见 这个 edit controller 章。
cubicweb.web.controller
包含顶级抽象控制器类及其未实现的入口点 publish(rset=None) 方法。
这里还提供了一些帮手:
process rql根据通常从浏览器发出的rql查询(并可通过_cw.form获得)构建结果集 ['RQL'] )
validate_cache将强制对HTTP缓存指令(通常是从以前的服务器发出的)->client response进行缓存验证处理);处理HTTP的具体控制器实现(例如,不是sendmail控制器)可能很好地调用在他们的出版过程中。