根据条件改变if语句的主体

时间:2014-09-26 18:52:31

标签: php magento

这是我的问题 我有一个类说ABC和在其中定义的函数XYZ,该函数根据上面的逻辑返回一些东西。

class ABC {
function XYZ{
..........
.......
return "--- ";
}
}

现在这个类的另一个页面上有一个调用此方法的对象。

$z= new ABC;

if( $z->XYZ() )
{
some output
}
else{
another output
}

我的问题是我无法访问第2页。但我需要更改else语句的输出。我只能访问ABC类,因为我在模块中覆盖了它。所以,简而言之,我只能改变XYZ的功能。什么是解决方案??

如果它有任何意义,我正在研究MAGENTO ECOMMERCE平台,类是块类,第2页是模板

5 个答案:

答案 0 :(得分:3)

您可以使用http_response_send_before事件的观察者更改输出html。

捕捉html并做你的事。

您有一个很好的解释here

我希望这可以帮到你

答案 1 :(得分:1)


你也可以这样做:

<?php
ob_start();
// do your stuff
// ...

// here you capture all the output that it is generated by your scripts
$v = ob_get_contents();

// alter the value of $v by detecting if it should be changed. you can user regex for example to 
// detect and update
// ...
// here you clean all data stored in buffer
ob_clean();
// and put the updated data in buffer
print $v;

// end of buffer operations
ob_end_flush();

?>

希望它有所帮助,

答案 2 :(得分:0)

您需要一种方法来区分PAGE1和PAGE2,如果可能的话,请通过URL说明。因此,您必须更改将检查当前哪个页面的方法,并根据它,它将更改输出,但您必须在方法本身中编写输出,而不是将其写入模板中。 class ABC { function XYZ { $result = $this->getResult(); //Helper method to get the result. if ($result) { //Do something when result is true. } else { $url = $this->checkUrl(); //Check URL of the page. if ($url == PAGE2) { //If you are on PAGE2 //Do something specific for the PAGE2 } else { //Do something for all other pages } } } } 我知道它不是完美的解决方案,但我希望它会以某种方式帮助你。

答案 3 :(得分:-1)

如果你在所有模板中使用它的方法是完全安全的,你会覆盖它,但如果它只在特定的模板中使用,你会扩展类以创建应用于它的模板的新方法。

答案 4 :(得分:-2)

必须在$_GET$_POST数组(或其他查询)中的某处指定页码。检查该变量并实现替代逻辑。