[英]Magento: creating temporary variable in PHTML template?
遵循Magento的体系结构,在.phtml
模板内创建临时变量的最佳方法是什么?
文件: /template/catalog/product/view.phtml
<?php
$myVar = $_product->getAttributeText('color');
if ( empty($myVar) ) {
// does not exist
} else {
// show the attribute
}
?>
除此表达式外,$ myVar在其他任何地方都不需要。
注意:我不是在寻找避免创建var的替代方法来编写此代码。 为了便于讨论,假设需要创建一个临时var的情况。
$myVar
应该是什么? 寻找“现实世界”的解决方案不只是纯粹的答案。 你会怎么写呢?
结合Ben的答案和Alan / Vinai的对话中的这一点https://twitter.com/VinaiKopp/status/225318270591442945 —这就是我要写的方式:
如果需要除基本逻辑以外的任何其他方法,我将使用新方法扩展该类。
否则,我将在本地范围内创建新的变量,如下所示:
$mynamespace_myVar = 'xyz';
这就是我喜欢的东西:
$mynamespace_
提醒我我创建了这个而不是Magento 这是我不喜欢的:
$_
来显示var是此模板的本地变量不是“ Magento方式”,但是会使代码更具可读性。 因此,我的模板大部分将具有以下代码:
$gravdept_someNiceData = true;
历史记录: https : //stackoverflow.com/a/3955757/833795
回复1,2,和3:这些选择之间的区别包括进入“纯粹主义者回答”领土,因为他们都是局部变量。
不需要使用注册表模式,因为所需范围被声明为模板渲染的本地范围。
根据您的示例,Magento中的适当构造可能是:
<?php if ($_product->getColor()): ?>
<h2> I HAZ COLOR </h2>
<?php else: ?>
<h2> I NO HAZ COLOR </h2>
<?php endif ?>
如果除了返回值的最简单测试外,没有什么比将逻辑添加为块类的方法(使用重写)更合适的了,因为实际上您提到的视图逻辑仅在此上下文中是本地的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.