我如何使用ajax?我的意思是,我应该将所有ajax代码放入控制器吗?还是进入视野?
通常,我创建一个指向’/ posts / author / ivan’的链接或类似它的链接,在Posts控制器中创建一个像’byAuthorAction()’的新Action,或者在任何地方使用Users控制器,查看它(以及所有代码)什么从模型的帖子去那里)并创建一个新的路由到它.
如何添加功能以获取json的任何用户帖子,ajax和API的xml格式,保持DRY原则并尽可能智能地设计代码结构?
–
谢谢你的回答!
我很高兴看到有关在像我这样的情况下设计MVC的评论.我在基本的MVC原则方面有一些经验,但在更复杂的情况下却没有.也许一些有用的链接?
>您的视图脚本(action-name.phtml)用于常规HTML输出
>您可以为控制器中的某些操作初始化上下文切换,以便输出例如XML – 默认情况下支持xml上下文,您可以将视图脚本放在xml上下文中(action-name.xml.phtml); xml上下文还禁用了布局的呈现
>内置上下文切换也支持json,默认选项是禁用布局和视图,并以JSON格式输出从控制器操作分配给视图的所有变量,可以使用setAutoJsonSerialization切换此选项(false)上下文切换的方法;但如果你切换它,你必须创建一个视图脚本action-name.json.phtml并手动输出JSON格式的变量
要在这两个上下文之间切换,您必须在网址中添加格式参数,例如/ posts / author / ivan / format / json或/ posts / author / ivan / format / xml.如果您没有指定格式,您的应用程序将输出纯HTML.
Context开关的特殊版本是AjaxContext,您还必须手动配置它.它不使用’format’参数来标识它应该用于输出的格式,但它会检查请求中发送的标头,并查找’X-Requested-With:XmlHttpRequest’标头,如果存在,则检查AjaxContext.使用AjaxContext操作助手,您可以指定在使用AJAX触发请求时应将哪个上下文用于特定操作.