【问题标题】:Defining magento template path定义magento模板路径
【发布时间】:2016-03-04 09:00:49
【问题描述】:

我正在像这样以编程方式在 Magento 管理控制器中加载一个块

`$block = $this->getLayout()->createBlock('core/text')->setText('<script type="text/javascript" ></script>');`

现在,我想使用 setTemplate 方法而不是 setText。我在这个目录 design/adminhtml/default/default/product/productcrop.phtml 中创建了一个模板文件

我应该如何加载它,即 setTemplate 方法中的参数是什么?

我试过这样:->setTemplate('adminhtml/product_productcrop.phtml')。但它似乎不起作用。

整个控制器代码为:

<?php 
class Homeliv_Leadsadmin_Adminhtml_ProductController extends Mage_Adminhtml_Controller_Action {
    public function indexAction() {
        $this->loadLayout()->_setActiveMenu('leadsadmin/product');
        $this->_addContent($this->getLayout()->createBlock('leadsadmin/adminhtml_product'));
        $this->renderLayout();
    }

    public function editAction() {

        $product_id = $this->getRequest()->getParam('id');
        $full_product = Mage::getModel('catalog/product')->load($product_id);
        $productMediaConfig = Mage::getModel('catalog/product_media_config');
        //$baseImageUrl = $productMediaConfig->getMediaUrl($full_product->getImage());
        //$thumbImageUrl = $productMediaConfig->getMediaUrl($full_product->getThumbnail());
        $smallImage = $productMediaConfig->getMediaUrl($full_product->getSmallImage());


        $this->loadLayout();
        //$this->_title($this->__("Product"));   
       /* $block = $this->getLayout()->createBlock('core/text')->setText('<script type="text/javascript" src="'.Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).'media/leadsadmin/product_crop.js'.'"></script>');
        $this->_addJs($block);

        $this->_addLeft($this->getLayout()
        ->createBlock('core/text')
         ->setText('<h1>Image</h1><img src="'.$smallImage.'"/>'));



        $block = $this->getLayout()
        ->createBlock('core/text')
        ->setText('<h1>Main Block</h1>');           
        $this->_addContent($block);*/


        $block = $this->getLayout()->createBlock('core/template')-> setTemplate('product/productcrop.phtml')->toHtml();
        $this->_addContent($block);

        //$this->getLayout()->createBlock('leadsadmin/adminhtml_product')->setTemplate('product/productcrop.phtml')->toHtml();
        //$this->getLayout()->createBlock('core/text')->setText('<div>ssxsxsx</div>');
        $this->renderLayout();

        //var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
        //die();

        //$this->loadLayout()->_setActiveMenu('leadsadmin/product');
        //$this->_addContent($this->getLayout()->createBlock('leadsadmin/adminhtml_product'));
        //$this->renderLayout();
    }


}

【问题讨论】:

    标签: magento


    【解决方案1】:

    对于您拥有的模板。你的模板路径将是设置模板product/productcrop.phtml

     $block = $this->getLayout()
        ->createBlock('core/template')
        ->setTemplate('product/productcrop.phtml');
    
    $this->getLayout()->getBlock('content')->append($block);
    

    【讨论】:

    • 我用这个来添加块:$this->_addContent($block);它抛出错误:可恢复错误:传递给 Mage_Adminhtml_Controller_Action::_addContent() 的参数 1 必须是 Mage_Core_Block_Abstract 的实例
    • 你能解释一下你想要达到的目标,以便我能提供帮助吗?
    • 我在问题中添加了控制器代码。我只想以编程方式加载我的 phtml 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2011-07-03
    相关资源
    最近更新 更多