Zend Framework:在索引视图中输入其他控制器

时间:2011-05-22 07:27:33

标签: php zend-framework zend-feed

我是Zend FW的新手。我希望在名为Feedparsercontroller的indexAction的控制器中编写一个简单的feedparser。但我想在我的索引页面上将解析后的Feed输出显示为小部件。如何将输出/变量数据驱动到我的indexview?

以下是我的解析器。

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

}

我想在我的登录中实现相同的功能,同时注册控制器。

3 个答案:

答案 0 :(得分:2)

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

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

然后,创建一个包含javascript代码的partial来调用feed控制器,然后输出你想要的小部件。这样做很好。

  1. 它集中了与饲料相关的逻辑
  2. 它允许您将Feed小部件放在任何您想要的位置
  3. 这是一种SOA方法,通常是一件好事
  4. 希望这有帮助!

答案 1 :(得分:1)

我认为小部件的最佳逻辑是 ajax

使用一些js 小部件库(例如jQuery ui),然后通过一些ajax查询加载这些小部件,返回HTML,这允许你重新加载behviours的简单小部件(不重新编码)整页)。

在服务器端,你需要允许你的控制器/动作通过ajax请求调用,并且只发送html片段(不是包含所有布局的整个页面)。

要检查ContextSwitch and AjaxContext动作助手。您将告诉您的FeedparserController,可以使用XMLHHTTPRequest中的/ format / html调用索引操作,并且在这种情况下,视图助手将是索引。

在init部分,你会说可以在ajax模式下调用indexAction,渲染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添加为参数的url(所以http://example.com/feedparser/index/format/html

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

答案 2 :(得分:0)

视图助手怎么样?

您可以阅读View Helpers in Zend Framework