如何将新的类或控制器添加到核心?

时间:2013-11-25 13:43:35

标签: prestashop-1.5

我正在尝试找出如何创建新类或控制器,而不是覆盖现有类或控制器。所以我在/controllers/front/TestController.php

中创建了控制器测试
class TestFrontController extends FrontController
{
    public $php_self = 'test';

    public function initContent()
    {
        parent::initContent();
        echo "Test!";
    }  
}

但如果我去mystore.com/index.php?controller=test我会得到一个白页。在此之前,我已在class_index.php中删除了cache

我的新控制器还需要什么工作?

P.S。调试行说:

Fatal error: Class 'Test' not found in C:\LS\mystore\www\classes\controller\Controller.php on line 128

好吧,似乎每个控制器都必须拥有它自己的类,但这可能不正确,因为我还创建了一个简单的Test类。该类还必须具有数据库表。

[ 1。 upd ]我做了一个测试表,类必须包含$的字段定义,但仍然没有线索为什么我不能运行脚本:

Fatal error: Call to undefined method Test::run() in C:\LS\mystore\www\classes\Dispatcher.php on line 348

这就是我现在的调试错误消息。

[ 2。 upd ]我可以在我的Test类中添加一个Run方法,但我认为没有意义:

class TestCore extends ObjectModel
{   
    public $id_test;

    protected $_test;

        /**
     * @see ObjectModel::$definition
     */
    public static $definition = array(
        'table' => 'test',
        'primary' => 'id_test',
        'fields' => array(
            'id_test' =>    array('type' => self::TYPE_INT, 'validate' => 'isInt'),
        ),
    );

    public function Run()
    {
        echo "Test!";
    }
}

它只显示Test!,而不显示内容和其他内容,其他类根本没有这种方法,并且工作正常。

溶液即可。一切都很好,我的覆盖/控制器/前端也有一个test.php文件,所以这就是原因。

1 个答案:

答案 0 :(得分:1)

我认为您应该创建一个名为“test.php”的文件,其中包含以下代码:

<?php
require(dirname(__FILE__).'/config/config.inc.php');
ControllerFactory::getController('TestFrontController')->run();