Php 如何从控制器操作中调用magentoajax块
如何获得以下各项的输出:Php 如何从控制器操作中调用magentoajax块,php,ajax,magento,Php,Ajax,Magento,如何获得以下各项的输出: <block type="page/template_links" name="top.links" as="topLinks"/> 控制器动作内部 事实上,我必须通过AJAX显示链接 如果我理解正确,您可以在操作功能中执行此操作: $linksBlock = $this->getLayout()->createBlock('page/template_links'); echo $linksBlock->toHtml(); 要通过
<block type="page/template_links" name="top.links" as="topLinks"/>
控制器动作内部
事实上,我必须通过AJAX显示链接 如果我理解正确,您可以在操作功能中执行此操作:
$linksBlock = $this->getLayout()->createBlock('page/template_links');
echo $linksBlock->toHtml();
要通过ajax调用获取内容,请添加以下js脚本:
new Ajax.Updater('your_container', '/your_controller/your_action');
请试试这一个,我已经检查过了,它还在工作。你可以看看
此模块允许您使用ajax加载块,只需通过布局文件即可虽然提供的投票结果确实回答了问题,但它们都忽略了一种常见情况,即使用ajax加载的块所采取的某些特定操作将阻止Magento重定向按预期工作 以以下情况为例:
- 通过AJAX加载的块
- 块具有“添加到购物车”按钮(可能是由
helper生成的)getAddUrl($product)
- 系统配置>>结帐>>购物车>>“添加产品后重定向到购物车”==否
\u goBack()
方法重定向用户。这会导致先前通过AJAX加载的块在页面上呈现,而不是将用户重定向到他们所在的页面
为了防止这种情况发生,请在加载块的AJAX请求中添加一个额外的参数
'your_param'
,并为其指定一个值Mage::helper('core/url')->getCurrentUrl()
(或任何您可能需要的值)。例如:
jQuery.ajax({
url: '<?php echo $yourUrl ?>',
page: '<?php echo Mage::helper("core/url")->getCurrentUrl()?>'
})
这将允许用户在添加到购物车后返回上一页。这也将为用户提供一种返回站点的方式,如果他们恰好到达了您控制器的URL 这个控制器是由ajax调用请求的?我得到了一个错误:我用它做了,但是它显示了一个空白页面,没有输出。$This->getLayout()->createBlock('page/template_links')->toHtml();是的,我确实回显了,但发现了一个空白页面:回显$linksBlock=$this->getLayout()->createBlock('page/template_links')->toHtml();当我调用header:echo$linksBlock=$this->getLayout()->createBlock('page/html_header')->toHtml();结果很好。createBlock()为我返回null。我想知道你试图创建的块是否必须在加载的布局中或其他地方?我不知道该怎么做。
jQuery.ajax({
url: '<?php echo $yourUrl ?>',
page: '<?php echo Mage::helper("core/url")->getCurrentUrl()?>'
})
if (!this->getRequest()->isXmlHttpRequest()) {
$this->getResponse()->setRedirect($this->getRequest()->getParam('your_param'));
}
// ... existing controller code ...
// ... ie: $block->toHtml() ...