boで休止状態のユーザーを表示するためにバックオフィス(bo)モジュールを作成しています モジュールを作成してモジュールが正しくインストールされていて、それは適切ですが、「休眠中のユーザー」メニューをクリックすると、function.phpにエラーが発生します。このページには触れていません。presatshopでモジュールを作成したときに致命的なエラーが発生しました
致命的なエラー:未定義のメソッドDormantUsersに呼び出し:: DでviewAccessを():\ XAMPP \ htdocsに\ raffleV1.1 \ oknr9hexztcseff5 \のfunctions.phpはライン上でここ279
は私のモジュールへのリンクです https://www.dropbox.com/s/xlg6623jwyx4nnp/dormantusers.zip?dl=0 抽出して試してください。なぜこのエラーが発生するのかを確認してください。
私がやったことは次のとおりです modulesフォルダにdormantusersフォルダを作成してdormantusers.phpを作成し、そのページのコードを以下に示します。
<?php
if (!defined('_PS_VERSION_')) exit;
class DormantUsers extends Module
{
public function __construct()
{
$this->name = 'dormantusers';
$this->tab = 'others';
$this->version = '1.0.0';
$this->author = 'KITS';
$this->need_instance = 0;
/**
* Set $this->bootstrap to true if your module is compliant with bootstrap (PrestaShop 1.6)
*/
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->l('DormantUsers');
$this->description = $this->l('Allow your Back Office to View Dormant Users ');
$this->confirmUninstall = $this->l('You want to Uninstall DormantUsers ?.');
$this->_tabsArray = array(
'DormantUsers' => 'Dormant Users',
);
}
/**
* Don't forget to create update methods if needed:
* http://doc.prestashop.com/display/PS16/Enabling+the+Auto-Update
*/
public function install()
{
return parent::install() && $this->_installTabs();
}
private function _installTabs()
{
$parentTab = new Tab();
foreach (Language::getLanguages() as $language) $parentTab->name[$language['id_lang']] = 'Dormant Users';
$parentTab->class_name = 'DormantUsers';
$parentTab->module = $this->name;
$parentTab->id_parent = 0;
if (!$parentTab->save()) return false;
else {
$idTab = $parentTab->id;
//$idEn = Language::getIdByIso('en');
foreach ($this->_tabsArray as $tabKey => $name) {
$childTab = new Tab();
foreach (Language::getLanguages() as $language) $childTab->name[$language['id_lang']] = $name;
$childTab->class_name = $tabKey;
$childTab->module = $this->name;
$childTab->id_parent = $idTab;
if (!$childTab->save()) return false;
}
}
return true;
}
public function uninstall()
{
$this->_uninstallTabs();
return parent::uninstall();
}
private function _uninstallTabs()
{
foreach ($this->_tabsArray as $tabKey => $name) {
$idTab = Tab::getIdFromClassName($tabKey);
if ($idTab != 0) {
$tab = new Tab($idTab);
$tab->delete();
}
}
$idTab = Tab::getIdFromClassName('DormantUsers');
if ($idTab != 0) {
$tab = new Tab($idTab);
$tab->delete();
}
return true;
}
/**
* Add the CSS & JavaScript files you want to be loaded in the BO.
*/
public function hookBackOfficeHeader()
{
if (Tools::getValue('module_name') == $this->name) {
}
}
}
コントローラフォルダのcontrollers/admin/DormantUsersController.phpには、次のコードがあります。
<?php
require_once(_PS_MODULE_DIR_.'dormantusers/dormantusers.php');
require_once(_PS_MODULE_DIR_.'dormantusers/classes/DormantUsers.php');
class DormantUsersController extends ModuleAdminController
{
public $module;
public $html;
public $tabName = 'renderForm';
public function __construct()
{
$this->tab = 'dormantusers';
$this->module = new dormantusers();
$this->addRowAction('view');
$this->explicitSelect = false;
$this->context = Context::getContext();
$this->id_lang = $this->context->language->id;
$this->lang = false;
$this->ajax = 1;
$this->path = _MODULE_DIR_.'dormantusers';
$this->default_form_language = $this->context->language->id;
$this->table = 'customers';
$this->className = 'DormantUsers';
$this->identifier = 'id_customer';
$this->allow_export = true;
$this->_select = '
firstname,
lastname,
email,
nationality,
passport_no,
date_add
';
$this->name = 'DormantUsers';
$this->bootstrap = true;
$this->initList();
parent::__construct();
}
private function initList()
{
$this->fields_list = array(
'firstname' => array(
'title' => $this->l('First Name'),
'width' => 140,
'type' => 'text',
),
'lastname' => array(
'title' => $this->l('Last Name'),
'width' => 140,
'type' => 'text',
),
'email' => array(
'title' => $this->l('Email'),
'width' => 140,
'type' => 'text',
),
'nationality' => array(
'title' => $this->l('Nationality'),
'width' => 140,
'type' => 'text',
),
'date_add' => array(
'title' => $this->l('date add'),
'width' => 140,
'type' => 'text',
),
'passport_no' => array(
'title' => $this->l('passport_no'),
'width' => 140,
'type' => 'text',
),
);
$helper = new HelperList();
$helper->shopLinkType = '';
$helper->simple_header = true;
// Actions to be displayed in the "Actions" column
$helper->actions = array('view');
$helper->identifier = 'id_customer';
$helper->show_toolbar = true;
$helper->title = 'HelperList';
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
return $helper;
}
public function initPageHeaderToolbar()
{
$this->page_header_toolbar_title = $this->l('Dormant Users List ');
parent::initPageHeaderToolbar();
}
public function initToolbar()
{
parent::initToolbar();
$this->context->smarty->assign('toolbar_scroll', 1);
$this->context->smarty->assign('show_toolbar', 1);
$this->context->smarty->assign('toolbar_btn', $this->toolbar_btn);
}
public function postProcess()
{
parent::postProcess();
}
}