Val*_*lev 7 php ajax model-view-controller zend-framework
我将使用Zend Framework MVC实现启动一个项目.
我如何使用ajax?我的意思是,我应该将所有ajax代码放入控制器吗?还是进入视野?
例如,我想从作者'ivan'获取帖子以显示在页面上.
通常,我创建一个指向'/ posts/author/ivan'的链接或类似它的链接,在Posts控制器(或者可能是用户控制器,无论在哪里)中创建一个像'byAuthorAction()'的新Action,查看它(以及所有代码)什么从模型获得帖子去那里)并创建一个新的路由到它.
如何添加功能以获取json的任何用户帖子,ajax和API的xml格式,保持DRY原则并尽可能智能地设计代码结构?
-
谢谢你的回答!我很高兴看到有关在像我这样的情况下设计MVC的评论.我在基本的MVC原则方面有一些经验,但在更复杂的情况下却没有.也许一些有用的链接?
Gor*_*rić 13
您真的应该阅读有关ContextSwitch Action Helper的手册章节.但这里有一个简要的概述:
要在这两个上下文之间切换,您必须在URL中添加格式参数,例如/ posts/author/ivan/format/json或/ posts/author/ivan/format/xml.如果您没有指定格式,您的应用程序将输出纯HTML.
Context开关的特殊版本是AjaxContext,您还必须手动配置它.它不使用'format'参数来标识它应该用于输出的格式,但它会检查请求中发送的标头,并查找"X-Requested-With:XmlHttpRequest"标头,如果存在,则检查AjaxContext.使用AjaxContext操作助手,您可以指定在使用AJAX触发请求时应将哪个上下文用于特定操作.
您可以通过检测ajax请求来使用相同的操作来返回XML,JSON或其他任何内容,从而能够区分ajax请求和正常请求.例如:
public function fooAction()
{
if($this->getRequest->isXmlHttpRequest()) {
echo json_encode($someData);
} else {
echo 'This is the normal output';
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3935 次 |
最近记录: |