Как добавить новый класс или контроллер в ядро?

Я пытаюсь выяснить, как создать новый класс или контроллер вместо переопределения существующего. Итак, я создал тест контроллера в /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] Я могу добавить метод Run в свой класс Test, но думаю, что это не имеет смысла:

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 в моем override/controllers/front, так что это было причиной.


person Smash    schedule 25.11.2013    source источник
comment
вы можете поместить свое решение в качестве ответа, а затем принять его.   -  person sttaq    schedule 10.05.2014


Ответы (1)


Я думаю, вам следует создать файл с именем «test.php», содержащий код, представленный ниже:

<?php
require(dirname(__FILE__).'/config/config.inc.php');
ControllerFactory::getController('TestFrontController')->run();
person Lashus    schedule 25.11.2013
comment
Если в корневой папке, то не помогает. - person Smash; 25.11.2013