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输出,则这具有无重定向开销的额外好处.
禁用动作中的视图呈现(将其放入特定操作中.如果您希望将其用于整个控制器,请将其放在init方法中):
$this->_helper->viewRenderer->setNoRender();
Run Code Online (Sandbox Code Playgroud)
如果您使用的是ZF的布局组件,请添加以下内容:
$this->_helper->layout->disableLayout();
Run Code Online (Sandbox Code Playgroud)
您致电:
$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/