duanbo2048 2016-02-11 11:28
浏览 79
已采纳

Prestashop 1.6 - 在adminController中使用我的自定义content.tpl

I defined my content.tpl template in my module, so i want to use it in my admin controller that i extended from prestashop AdminController.

I know there is a property in which i can set the path to my template, but i don't know how to define the right path to it because when i execute the code prestashop add `

'C:\xampp\htdocs\prestashop\admin0559umpxx/themes/default\template\`

To my link.

My custom template located in mymodule/views/templates/admin/content.tpl, and the property i use to set my path is $this->template.

indeed, my code is like this :

class AdminSelStockController extends AdminController
{
    public function __construct()
    {
        $this->module = new SelStock();

        $this->addRowAction('edit'); //add an edit button
        $this->addRowAction('delete'); //add a delete button
        $this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));
        $this->explicitSelect = true;
        $this->context = Context::getContext();
        $this->id_lang = $this->context->language->id;
        $this->path = _MODULE_DIR_."selStock";

        $this->default_form_language = $this->context->language->id;
        $this->table = 'selstock_product'; //define the main table
        $this->className = 'SelStockProductModel'; //define the module entity
        $this->identifier = "id_selstock_product"; //the primary key
        //then define select part of the query
        $this->_select = 'a.id_selstock_product,a.image_path,a.reference,a.product_name,a.category_name,a.quatity';
        //join to an existing table if you need some extra informations
        $this->_join = 'LEFT JOIN `'._DB_PREFIX_.'selstock_product_lang` spl ON (spl.`id_selstock_product` = a.`id_selstock_product`)';
        $this->_where = "AND spl.id_lang = '".$this->id_lang."'";
        $this->bootstrap = true;
        $this->layout = _PS_MODULE_DIR_.'/selStock/views/templates/admin/layout.tpl';
        $this->template = _PS_MODULE_DIR_.'/selStock/views/templates/admin/content.tpl';
        //and define the field to display in the admin table
        $this->fields_list = array(
            'id_selstock_product' => array(
                'title' => $this->l('Product Num'),
                'align' => 'center',
                'width' => 120
            ),
            'image_path' => array(
                'title' => $this->l('Image'),
                'align' => 'center',
                'width' => 120
            ),
            'reference' => array(
                'title' => $this->l('Reference'),
                'align' => 'center',
                'width' => 120
            ),
            'product_name' => array(
                'title' => $this->l('Name'),
                'align' => 'center',
                'width' => 120
            ),
            'category_name' => array(
                'title' => $this->l('Category'),
                'align' => 'center',
                'width' => 120
            ),
            'quatity' => array(
                'title' => $this->l('Quantity'),
                'align' => 'center',
                'width' => 120
            ),
            'store_name' => array(
                'title' => $this->l('Store'),
                'align' => 'center',
                'width' => 120
            )
        );

        parent::__construct();
    }

For layout it's ok, i could use my own.but i don't know where is the problem with template.

  • 写回答

2条回答 默认 最新

  • dongrong3171 2016-02-11 12:04
    关注

    Very cool, i found the solution by adding these functions to my adminController :

    /**
         * Get path to back office templates for the module
         *
         * @return string
         */
        public function getTemplatePath()
        {
            return _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/';
        }
    
        public function createTemplate($tpl_name) {
            if (file_exists($this->getTemplatePath() . $tpl_name) && $this->viewAccess())
                return $this->context->smarty->createTemplate($this->getTemplatePath() . $tpl_name, $this->context->smarty);
                return parent::createTemplate($tpl_name);
        }
    
        public function initContent(){
            parent::initContent();
            $tpl = $this->createTemplate('content.tpl')->fetch();
            /* DO STUFF HERE */
    //        $posts = array();
    
    //        $this->context->smarty->assign('posts', $posts);
    
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致