博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento block controller layout
阅读量:4202 次
发布时间:2019-05-26

本文共 2664 字,大约阅读时间需要 8 分钟。

1.
./code/community/Zendesk/Zendesk/Block/Adminhtml/Dashboard/Grids.php

$this->getLayout()->createBlock('zendesk/adminhtml_dashboard_tab_tickets_grid_all')->toHtml();

./code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order.php:40:        

return $this->getLayout()->createBlock('adminhtml/widget_button')->setData($addButtonData)->toHtml();

./code/community/Zendesk/Zendesk/Block/Adminhtml/Create/Order.php:40:        

return $this->getLayout()->createBlock('adminhtml/widget_button')->setData($addButtonData)->toHtml();

 

 

class Aschroder_SMTPPro_Block_Adminhtml_Test

    extends Mage_Adminhtml_Block_System_Config_Form_Field
{

    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
    {
        $this->setElement($element);
        $buttonHtml = $this->_getAddRowButtonHtml($this->__('Run Self Test'));
        return $buttonHtml;
    }

   protected function _getAddRowButtonHtml($title)
  {

        $buttonBlock = $this->getElement()->getForm()->getParent()->getLayout()->createBlock('adminhtml/widget_button');

        $_websiteCode = $buttonBlock->getRequest()->getParam('website', null);

        $params = array();

        if(!empty($_websiteCode)) {

            $params['website'] = $_websiteCode;
        }

        // TODO: for real multi-store self-testing, the test button (and other configuration options)

        // should probably be set to show in website. Currently they are not.
        $url = Mage::helper('adminhtml')->getUrl("*/smtp_test/index", $params);

        $buttonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')

                    ->setType('button')
                    ->setLabel($this->__($title))
                    ->setOnClick("window.location.href='".$url."'")
                    ->toHtml();

        return $buttonHtml;

    }

}

直接创建一个block,然后加入到配置中

```

public function indexAction()
{
//Get current layout state
$this->loadLayout();
 
$block = $this->getLayout()->createBlock(
'Mage_Core_Block_Template',
'my_block_name_here',
array('template' => 'activecodeline/developer.phtml')
);

// 从layout中得到一个已有的block,然后将上面创建的加入的写法。

$this->getLayout()->getBlock('content')->append($block);
 
//Release layout stream... lol... sounds fancy
$this->renderLayout();
}

```

```
    public function indexAction(){
        $this->loadLayout();
        $this->_initLayoutMessages('customer/session');
        $this->renderLayout();
    }
```

2.代码剖析

上面是在controller和block可以被执行中执行的

2.1 $this->getLayout()

2.1.1 block: Mage_Core_Block_Abstract

 

    /**

     * Retrieve layout object
     *
     * @return Mage_Core_Model_Layout
     */
    public function getLayout()
    {
        return $this->_layout;
    }

返回的是:Mage_Core_Model_Layout

2.1.2 controller: Mage_Core_Controller_Varien_Action

 

/**

     * Retrieve current layout object
     *
     * @return Mage_Core_Model_Layout
     */
    public function getLayout()
    {
        return Mage::getSingleton('core/layout');
    }

 

本质就是:单例模式的core/layout  model:

Mage::getSingleton('core/layout');

 

2.2 loadLayout

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://bpcli.baihongyu.com/

你可能感兴趣的文章
mysql数据库从库同步延迟的问题
查看>>
1.mysql数据库主从复制部署笔记
查看>>
mysql数据库主从同步的问题解决方法
查看>>
mysql 配置 - on xFanxcy.com
查看>>
MySQL数据库高并发优化配置
查看>>
mysql一: 索引优化
查看>>
测试人员,今天再不懂BDD就晚了!
查看>>
是QA还是AQ?
查看>>
害怕自动化(1)
查看>>
Script and Test Data
查看>>
在ITPub上发表文章《如何进行测试自动化的成本估算》
查看>>
深圳市软件质量提升工程系列活动——安全测试百人大课堂
查看>>
做培训讲师就像做一名导演
查看>>
深圳51testing笔架山一日游
查看>>
LoadRunner如何在脚本运行时修改log设置选项?
查看>>
QC数据库表结构
查看>>
自动化测试工具的3个关键部分
查看>>
测试工具厂商的编程语言什么时候“退休”?
查看>>
资源监控工具 - Hyperic HQ
查看>>
LoadRunner中Concurrent与Simultaneous的区别
查看>>