PrestaShop:如何加载我的模块的自定义类(模型)

时间:2016-12-19 12:07:58

标签: php model-view-controller module prestashop prestashop-1.6

你好我正在为它的新工作prestrashop而我正在尝试在管理面板中开发一个模块我创建了一个模型calss sizeguide但是当我点击添加它显示错误时,

  

致命错误:第1614行的classes \ controller \ AdminController.php中找不到类'sizeguide'

我确实尝试修复它,但我无法修复它,即使类在class_index.php中显示如下。

'Sizeguide' => array (
'path' => '',
'type' => 'class',
'override' => false,
),

 'SizeguideCore' => array (
'path' => 'classes/Sizeguide.php',
'type' => 'class',
'override' => false,
),

请提前帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

moduleadmincontroller它与modulefrontcontroller略有不同。

我会写一些指导原则。

命名
班级名称应该是AdminCONTROLLERNAMEController 例如:
    class AdminGalleryController

完整的声明应该是:

class AdminGalleryController extends ModuleAdminController
{
   // some stuff
}


在数据库中添加“控制器”
必须在数据库中添加新的管理控制器,否则调度程序找不到它。 此代码段在数据库中添加新的管理控制器:

$tab = new Tab();
foreach (Language::getLanguages() as $language) {
    $tab->name[$language['id_lang']] = $tabName;
}
$tab->class_name = 'AdminGallery';
$tab->module = /*yourmodulename*/;
$tab->id_parent = 0; 
/* 
* If you want to add as a child of some admin controller 
* that is in the backoffice menu you have to use this code: 
* (int)Tab::getIdFromClassName('AdminCatalog');
* With that code you add your controller as a child of 'AdminCatalog' controller
*/
$tab->save()

通常应在模块的install方法中添加此代码段。

回答您的问题后,您的班级不应该在class_index.php,您的模型应该放在您的模块中并由他加载。

例如,在您的模块构造函数中,您可以添加以下代码段:

public function __construct()
{
   /* ... */
    require_once( _PS_MODULE_DIR_ . DIRECTORY_SEPARATOR . $this->name . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'Sizeguide.php' );
   /* ... */
}