2011-05-22 82 views
2

我是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(); 
     } 
    } 
} 

} 

我想实现与我的登录,注册控制器相同。

+2

如果你不想通过url调用这些控制器,只想让它们成为小部件,你不需要把这些东西放到控制器中。只需编写您自己的域对象并将其包含在您的视图中。 – 2011-05-22 08:00:35

+0

你好, 感谢您的回复, 我想在不同的控制器使用它因为我想重用解析器,说运行作为一个cron作业从饲料中获取结果,int未来。所以我想用它作为一个不同的控制器,并将数据路由到索引视图 – 2011-05-22 08:26:57

回答

2

也许我不完全理解你的问题。

但是,这里最好的办法似乎是创建一个单独的feed控制器,它独立负责与feed相关的业务逻辑(检索,按摩,设置查看等)。

然后,创建一个包含javascript代码的部分来调用feed控制器,然后输出您期望的窗口小部件。这样做有一些好处。

  1. 它集中饲料相关的逻辑
  2. 它可以让你把原料部件,无论你想
  3. 这是一个SOA的做法,通常是一件好事

希望这有助于!

+0

感谢您的回复, 我有同样的想法,使用Ajax,但有没有“最常用的”方法来使它安全,我的意思是,我将解析feed并应用我的算法从feed中获取有用的项目,然后将它放到页面mystery.com/feedparser/jsonview,我如何使用Zend远程调用它。 – 2011-05-24 22:42:39

+0

Hi Eswar, 一般来说,这种保护是系统防火墙的工作,而不是应用程序本身。如果您正在进行AJAX调用,那么对控制器的所有调用都将来自外部源,除非这是一个内部应用程序。 – 2011-05-25 02:21:02

+0

非常感谢您的回复。 – 2011-06-01 04:07:00

0

视图助手怎么样?

你可以阅读一下View Helpers in Zend Framework

+0

谢谢,我是Zend Framework的新手,我会详细阅读Helpers,看看它是否有帮助。 – 2011-05-24 22:46:33

1

我觉得跟小部件的最佳逻辑阿贾克斯

使用部分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.phtmlfeedparser/index.ajax.phtml

在indexAction,做你的东西,并输出你想要的视图脚本,不要考虑布局组合问题,你独自使用自己的布局部分,并在js端完成组合。

在JavaScript部分,确保您通过ajax($ .load或$。AJAX与jQuery也许)格式/ HTML作为参数(所以http://example.com/feedparser/index/format/html

URL请注意,在我看来你应该使用JSON响应,而不是HTML,也许JSON与一些HTML里面。但这是一个关于如何控制你的ajax通信(以及处理错误,重定向等等,这是另一个主题)的问题。

+0

非常感谢您的回复, 我有同样的想法,使用Ajax,但是有没有“最常用的”方法来保证它的安全,我的意思是,我将解析feed并应用我的算法从饲料,并把它放到一个页面说mysite.com/feedparser/jsonview,我怎样才能保护它从远程调用使用Zend。 – 2011-05-24 22:45:24

+0

@Eswar Rajesh Pinapala:这是另一个问题:-)检查示例http://stackoverflow.com/questions/2982284/securing-an-ajax-api-to-prevent-other-sites-from-taking-advantage-它的 – regilero 2011-05-25 07:57:40

+0

非常感谢您的回应。 – 2011-06-01 04:07:12

相关问题