我正在尝试在我的网络应用程序中制作一些ajax功能,但我不能让所有拼图都适合:
我想添加一个链接,当点击该链接时,将打开一个可由用户填写的新输入(文本)字段。在后端,我想做一些点击链接的管理。
我想根据Zend Framework原则,使用ajaxLink()
方法。任何人都可以为我做一个例子吗?我已经阅读了官方文档(ZendX_JQuery),但它并没有完全帮助我。
我的前端(视图)代码如下所示;
<?= $this->ajaxLink("Subscribe", $this->url(array('controller' => 'mycontroller', 'action' => 'action1', 'id' => $event['id'])),
array("beforeSend" => "hide",
"update" => "#pb_" . $event['id'],
'noscript' => false,
'method' => 'POST')); ?>
我的后端代码看起来像这样。
public function action1Action()
{
if( !$this->loggedIn || ! $this->athlete) {
$this->_redirect('index');
}
if(! $this->_request->isXmlHttpRequest())
{
//The request was NOT made with JS XmlHttpRequest
die;
}
// Do some administration
// (removed to make this easier in this example)
$pb = new Zend_Form_Element_Text('PB');
$pb->setLabel('PB:')
->addValidator('StringLength', false, array(0,20))
->setRequired(false);
$renderText = $pb->render();
return $renderText;
}
我不断收到错误,说明给定的方法想要查找action1.phtml视图脚本。我也不确定我尝试使用表单输入元素的生成是否以这种方式工作。
我在this question找到了一些答案,但它不是那么优雅(需要链接中的额外参数,你需要另一个控制器),我不喜欢。
答案 0 :(得分:2)
您需要为此特定操作关闭ViewRenderer。默认情况下,ZF启用一个名为ViewRenderer的Action Helper,它将常规命名的视图脚本(在您的情况下为action1.phtml)分配给特定的操作方法。由于您只是尝试返回一小段文本而不是完整的网站视图,因此不需要全视图渲染。幸运的是,这很容易。
public function action1Action(){
$this->_helper->viewRenderer->setNoRender();
// the rest of your code
}
答案 1 :(得分:0)
没什么可说的。您所要做的就是将其指向您的内容来源。在您看来:
<?= $this->ajaxLink("Example 1","/controller/action1",
array('update' => '#content',
'noscript' => false,
'method' => 'POST')); ?>
在您的控制器中:
echo 'Some Content';
阅读本文:
http://www.mikaelkael.fr/IMG/pdf/ZendX_Framework_1.7.x_EN.pdf