Zend Framework:在索引视图中引入其他控制器
我是Zend FW的新手。我正在寻找一个名为Feedparsercontroller的indexAction的控制器中编写一个简单的feedparser。但我想在我的索引页面上将解析的提要输出显示为一个小部件。我如何将输出/变量数据驱动到我的索引视图?Zend Framework:在索引视图中引入其他控制器
以下是我的解析器。
class FeedparserController extends Zend_Controller_Action {
public function init() {
/* Initialize action controller here */
}
public function indexAction() {
$feedUrl = 'http://feeds.feedburner.com/ZendScreencastsVideoTutorialsAboutTheZendPhpFrameworkForDesktop';
$feed = Zend_Feed_Reader::import ($feedUrl);
$this->view->gettingStarted = array();
foreach ($feed as $entry) {
if (array_search ('Getting Started', $entry->getCategories()->getValues())) {
$this->view->gettingStarted [$entry->getLink()] = $entry->getTitle();
}
}
}
}
我想实现与我的登录,注册控制器相同。
也许我不完全理解你的问题。
但是,这里最好的办法似乎是创建一个单独的feed控制器,它独立负责与feed相关的业务逻辑(检索,按摩,设置查看等)。
然后,创建一个包含javascript代码的部分来调用feed控制器,然后输出您期望的窗口小部件。这样做有一些好处。
- 它集中饲料相关的逻辑
- 它可以让你把原料部件,无论你想
- 这是一个SOA的做法,通常是一件好事
希望这有助于!
感谢您的回复, 我有同样的想法,使用Ajax,但有没有“最常用的”方法来使它安全,我的意思是,我将解析feed并应用我的算法从feed中获取有用的项目,然后将它放到页面mystery.com/feedparser/jsonview,我如何使用Zend远程调用它。 – 2011-05-24 22:42:39
Hi Eswar, 一般来说,这种保护是系统防火墙的工作,而不是应用程序本身。如果您正在进行AJAX调用,那么对控制器的所有调用都将来自外部源,除非这是一个内部应用程序。 – 2011-05-25 02:21:02
非常感谢您的回复。 – 2011-06-01 04:07:00
视图助手怎么样?
谢谢,我是Zend Framework的新手,我会详细阅读Helpers,看看它是否有帮助。 – 2011-05-24 22:46:33
我觉得跟小部件的最佳逻辑阿贾克斯。
使用部分JS 部件库(也许jQuery UI的举例),然后使这些部件通过一些Ajax查询被加载,返回HTML,这允许您以及简单的部件重装behviours(不relaoding整个页面)。
在服务器端,您需要允许通过ajax请求调用您的控制器/操作并仅发送html片段(而不是包含所有布局的整个页面)。
这样做检查ContextSwitch and AjaxContext动作助手。您将告诉您的FeedparserController,索引操作可以在XMLHHTTPRequest中用/ format/html调用,并且在这种情况下,视图帮助器将会是索引。
在init部分,你会说的indexAction可以以Ajax模式被调用,渲染HTML片段( 'HTML'):
$Ajaxcontext = $this->_helper->getHelper('AjaxContext');
$Ajaxcontext->addActionContext('index', 'html')
->initContext();
现在只需重命名你的视图脚本feedparser/index.phtml
到feedparser/index.ajax.phtml
在indexAction,做你的东西,并输出你想要的视图脚本,不要考虑布局组合问题,你独自使用自己的布局部分,并在js端完成组合。
在JavaScript部分,确保您通过ajax($ .load或$。AJAX与jQuery也许)格式/ HTML作为参数(所以http://example.com/feedparser/index/format/html)
URL请注意,在我看来你应该使用JSON响应,而不是HTML,也许JSON与一些HTML里面。但这是一个关于如何控制你的ajax通信(以及处理错误,重定向等等,这是另一个主题)的问题。
非常感谢您的回复, 我有同样的想法,使用Ajax,但是有没有“最常用的”方法来保证它的安全,我的意思是,我将解析feed并应用我的算法从饲料,并把它放到一个页面说mysite.com/feedparser/jsonview,我怎样才能保护它从远程调用使用Zend。 – 2011-05-24 22:45:24
@Eswar Rajesh Pinapala:这是另一个问题:-)检查示例http://*.com/questions/2982284/securing-an-ajax-api-to-prevent-other-sites-from-taking-advantage-它的 – regilero 2011-05-25 07:57:40
非常感谢您的回应。 – 2011-06-01 04:07:12
如果你不想通过url调用这些控制器,只想让它们成为小部件,你不需要把这些东西放到控制器中。只需编写您自己的域对象并将其包含在您的视图中。 – 2011-05-22 08:00:35
你好, 感谢您的回复, 我想在不同的控制器使用它因为我想重用解析器,说运行作为一个cron作业从饲料中获取结果,int未来。所以我想用它作为一个不同的控制器,并将数据路由到索引视图 – 2011-05-22 08:26:57