从哪里来,数据在magento中被阻止?

时间:2016-02-08 14:56:55

标签: magento model block

在base \ default \ template \ customer / account / navigation.phtml中,代码为

<div class="block block-account">
<div class="block-title">
    <strong><span><?php echo $this->__('My Account'); ?></span></strong>
</div>
<div class="block-content">
    <ul>
        <?php $_links = $this->getLinks(); ?>
        <?php $_index = 1; ?>
        <?php $_count = count($_links); ?>
        <?php foreach ($_links as $_link): ?>
            <?php $_last = ($_index++ >= $_count); ?>
            <?php if ($this->isActive($_link)): ?>
                <li class="current<?php echo ($_last ? ' last' : '') ?>"><strong><?php echo $_link->getLabel() ?></strong></li>
            <?php else: ?>
                <li<?php echo ($_last ? ' class="last"' : '') ?>><a href="<?php echo $_link->getUrl() ?>"><?php echo $_link->getLabel() ?></a></li>
            <?php endif; ?>
        <?php endforeach; ?>
    </ul>
</div>

显示以下列表:

account information

我知道这个块,但是我想知道块是如何接收这些数据的,如果它是如何的话,块和模型之间的任何链接。任何人解释这个整体流程。

1 个答案:

答案 0 :(得分:0)

它们实际上来自一个类,由于块类型,你可以找到它。

使用您在此处customer/account/navigation.phtml说明的模板(视图)搜索我的Magento将帮助您找到与其相关的布局。

然后你可以找到块类型。

所以在customer.xml,您可以找到:

<block type="customer/account_navigation" name="customer_account_navigation" template="customer/account/navigation.phtml">

此块类型customer/account_navigation实际上是您可以在文件Mage_Customer_Block_Account_Navigation

中找到的类src/app/code/core/Mage/Customer/Block/Account/Navigation.php

要找回这个类,有一个非常复杂的xml句柄游戏和文件机制路径,我已经多次解释过了,如果你对此感到好奇:meaning and location of string inside Magento's Mage:getSingletonMagento: call a custom block in CMS < / p>

那里的链接,正如你所看到的那样,正如你所看到的那样,是一个类本身的属性,通过以下方式填充:

public function addLink($name, $path, $label, $urlParams=array())
{
    $this->_links[$name] = new Varien_Object(array(
        'name' => $name,
        'path' => $path,
        'label' => $label,
        'url' => $this->getUrl($path, $urlParams),
    ));
    return $this;
}

您还可以在某些布局上看到他们实际上调用此方法来添加指向该块的链接,例如在review.xml

<reference name="customer_account_navigation">
    <action method="addLink" translate="label" module="review"><name>reviews</name><path>review/customer</path><label>My Product Reviews</label></action>
</reference>

您还可以看到它是同一个块,因为此处参考节点中的名称与上面复制的此块定义的名称相同:customer_account_navigation。< / p>