Magento调度外部应用程序

时间:2010-02-26 11:18:00

标签: php magento dispatch

我正在试图弄清楚Magento的调度系统是如何运作的。

我想从应用程序目录外部调度布局的某个部分(例如正文)。

到目前为止我有什么;

<?php
$app          = Mage::app();
$myRequestUri = '/checkout/cart';

$front        = $app->getFrontController();
$request      = $front->getRequest();

$request->setRequestUri($myRequestUri);

// dispatch everything
$front->dispatch();
?>

调度运行正常,但我需要将其拆分为正文或某个块。 还应该返回生成的HTML而不是直接输出它(最好不要使用输出缓冲)。

//罗兰

编辑: 我已经添加了我所取得的进展,stil给我留下了一些问题。

2 个答案:

答案 0 :(得分:1)

我没有试过这个,但你可以打破常规,只需将你自己的URL粉碎成$ _SERVER ['REQUEST_URI']。它被认为是糟糕的形式,但我会在破解核心之前做到这一点。

编辑: 根据您的编辑,很高兴您得到一些回复。所以现在的问题是你在页面上返回了所有HTML吗?对于某些页面,删除HTML可能没有意义。我们实际上试图检索哪些信息。

因此,如果您真的需要剥离页面,那么您需要做的是修改页面的布局。此信息存储在布局xml文件中。这需要进行相当多的修改,但想法是添加一个检查命令行操作的模块(isset($ _ SERVER ['argc'])可以工作),然后加载一个自定义句柄($this->getLayout()->getUpdate()->addHandle('my_custom_handle'); )它重置所有回显标题信息的phtml文件。如果没有黑客攻击核心文件,这将是有问题的,所以我建议默认情况下创建一个没有信息的新页面。

希望有所帮助, 乔

答案 1 :(得分:0)

感谢您帮助我,在此期间,我再次取得了很多进展,但仍然没有进展; - )

我真正希望实现的是可以调度任何magento页面。例如,对/ customer / account / login的有效http发布请求仍应登录。

除了呈现响应的正文外。我不希望默认情况下呈现布局,而是想以编程方式获取块(在相应的请求布局xml中定义)。

简短的代码示例,我如何看待它。

<?php
// code from previous post
// - load, set request uri, dispatch

$someBlock = getABlock('breadcrumbs'); // e.g. name attribute value in the xml
echo $someBlock->toHtml();
?>

Best会在本地代码池中处理这个问题,但是我不确定扩展(如果它可能的话)前端控制器是个好主意。

我不知道布局更新句柄..布局可以更新吗?这对他们意味着什么......