Zend Framework,没有视图运行查询?

7 php database zend-framework controller model

我目前正在使用Zend Framework为一个网站构建一个小管理部分,这只是我第二次使用框架,所以我对某些事情有点不确定.例如,我有一个新闻文章的存档选项,用户希望点击链接,文章将被存档,但我无法弄清楚如何在没有视图的情况下运行它?

这是我的控制器

public function archiveNewsAction()
{

    //die(var_dump($this->_request->getParam('news_id')));
    $oNews = new news();
    $this->_request->getParam('news_id');
    $oNews->archiveNewsArticle($news_id);
    //die(var_dump($oNews));
    $this->_redirect('/admin/list-all');
}
Run Code Online (Sandbox Code Playgroud)

这是我的模特

public function archiveNewsArticle($news_id)
{
    //die($news_id);
    $db = Zend_Registry::get('db');
    $sql = "UPDATE $this->_name SET live = '0' WHERE news_id = '$news_id' LIMIT 1";
    die($sql);
    $query = $db->query($sql);
    $row = $query->fetch();

    return $row;
}
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何人都能给予的帮助.

谢谢

西科

dra*_*ank 21

我使用它来调用我不想输出的AJAX操作或者我正在使用其他输出,比如XML或JSON:

// Disable the main layout renderer
$this->_helper->layout->disableLayout();
// Do not even attempt to render a view
$this->_helper->viewRenderer->setNoRender(true);
Run Code Online (Sandbox Code Playgroud)

如果您正在执行的操作没有输出/非HTML输出,则这具有无重定向开销的额外好处.


rg8*_*g88 5

禁用动作中的视图呈现(将其放入特定操作中.如果您希望将其用于整个控制器,请将其放在init方法中):

$this->_helper->viewRenderer->setNoRender();
Run Code Online (Sandbox Code Playgroud)

如果您使用的是ZF的布局组件,请添加以下内容:

$this->_helper->layout->disableLayout();
Run Code Online (Sandbox Code Playgroud)


Jac*_*ght 0

原答案:

您致电:

$this->_redirect();
Run Code Online (Sandbox Code Playgroud)

调用重定向器操作助手,它(除非您将其配置为不这样做)将在写入标头后立即自动退出脚本,因此永远不会调用或渲染视图,不需要视图脚本。


后续答复:

为了调用该操作而不将用户发送到其他“页面”然后再次重定向回来,您需要使用 XMLHttpRequest (AJAX) 调用。这些链接应提供您需要的信息:

http://developer.mozilla.org/en/AJAX
http://www.ibm.com/developerworks/xml/library/wa-ajaxintro1.html
http://www.oracle.com/technology/pub/articles/ schalk-ajax.html

另请看一些 JS 框架,它们使跨浏览器使用 XMLHttpRequest 变得更加容易:

http://www.prototypejs.org/
http://mootools.net/

Zend Framework 实际上内置了对 Dojo JS 框架的支持,您可能会发现这更容易:

http://framework.zend.com/manual/en/zend.dojo.html
http://www.dojotoolkit.org/