如何解决PS 1.7中我的后台未显示渲染视图
我正在尝试在模块安装中创建的后台标签中创建视图。我的模块添加标签如下:
protected function _installTabs()
{
if(!$tabId = \Tab::getIdFromClassName('IezonPortfolio')) {
$tab = new \Tab();
$tab->class_name = 'IezonPortfolio';
$tab->module = $this->name;
$tab->id_parent = \Tab::getIdFromClassName('ShopParameters');
$tab->active = 1;
foreach (Language::getLanguages(false) as $lang):
$tab->name[(int) $lang['id_lang']] = 'My Portfolio';
endforeach;
return $tab->save();
}
new \Tab((int) $tabId);
return true;
}
这很好用,我可以导航至我的商店参数,然后单击我的投资组合标签。我遇到的问题是空白。我的ModuleAdminController看起来像这样:
class IezonPortfolioController extends ModuleAdminController {
private $_module;
public function __construct()
{
$this->bootstrap = true;
parent::__construct();
$this->_module = \Module::getInstanceByName('iezonportfolio');
}
public function indexAction()
{
return $this->render('@Modules/iezonportfolio/views/templates/admin/display.html.twig',array(
'contents_iezonportfolio' => $this->_module->selectAll()
));
}
}
我的display.html.twig中仅包含test
,以查看是否会输出未输出的内容。 On looking at the Docs除了使用render
函数并将其返回外,没有提及任何其他内容。任何帮助,将不胜感激。我只是得到一个空白标签。
编辑:在查看了一些预安装的模块并将它们引用到Docs之后,我发现我缺少了路由配置。我的控制器位于记录的目录设置:iezonportfolio/controllers/admin/iezonportfolio.php
中,因此我的路由如下:
iezonportfolio:
path: iezonportfolio
methods: [GET]
defaults:
_controller: 'IezonPortfolio\Controllers\Admin\Controller::indexAction'
_legacy_controller: 'IezonPortfolioController'
_legacy_link: 'IezonPortfolioController:index'
这仍不能解决空白显示问题,因此我尝试更深入地研究其他模块,并更新了display.html.twig以显示此信息:
{% extends '@PrestaShop/Admin/layout.html.twig' %}
{% block content %}
Test
{% endblock %}
这也不能解决空白显示问题。我希望此功能对将来的观众有用。
解决方法
这不是现代控制器的工作方式,您正在扩展旧式ModuleAdminController
,请在此处查看:
https://github.com/PrestaShop/example-modules
您有很多模块示例,下面是其中一个模块的片段:
declare(strict_types=1);
namespace PrestaShop\Module\DemoControllerTabs\Controller\Admin;
use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController;
use Symfony\Component\HttpFoundation\Response;
class MinimalistController extends FrameworkBundleAdminController
{
/**
* @return Response
*/
public function indexAction()
{
return $this->render('@Modules/democontrollertabs/views/templates/admin/minimalist.html.twig');
}
}
我建议您考虑是否要使用或不使用现代控制器。这取决于您是否要出售模块,在客户项目中使用模块等。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。