Prestashop ModuleAdminController использует простой шаблон

Попытка выяснить, почему что-то вроде ниже не работает. В разделе администратора настроек есть вкладка, которая указывает на этот контроллер, но при переходе на него всегда выводится пустая страница. Я пробовал несколько вещей, но ниже в основном то, что мне нужно. МОДЕЛИ нет... Мне просто нужно это, чтобы получить загруженный файл для постобработки...

Файл контроллера...

class AdminAstroImporterController extends ModuleAdminController {

    public function initContent() {
        parent::initContent();
        return $this->display(__FILE__, 'import.tpl');

    }

    public function postProcess() {
        //do something here

    }
}

person Amb3rL4nn    schedule 02.12.2013    source источник
comment
Вы выяснили, что не так?   -  person Smash    schedule 20.01.2014
comment
да, я опубликую подробности в качестве ответа   -  person Amb3rL4nn    schedule 06.02.2014


Ответы (2)


Похоже, вы можете переопределить фактический вывод содержимого, выполнив действия, показанные в функции initContent(), показанной ниже. «Контент» в smarty assign может быть любым html, который вы сгенерируете сами.

class AstroImporterAdminController extends AdminController {
public function __construct() {
    parent::__construct();

    //load current settings
    $this->data = unserialize(Configuration::get('ASTRO_IMPORTER'));
}

public function initContent() {
    parent::initContent();

    $this->show_toolbar = false;
    $this->context->smarty->assign(array(
        'content' => $this->renderSettings().$this->renderForm().$this->displayFields(),
    ));
}
person Amb3rL4nn    schedule 06.02.2014

Я обнаружил, что это работает:

public function renderList()
{
    global $currentIndex, $cookie;

    $smarty = $this->context->smarty;

    $smarty->assign('currentIndex', $currentIndex);


    return $this->context->smarty->fetch($this->getTemplatePath().'/main.tpl');
}

Хотя он чертовски грязный, он кажется чище, чем ответ Amb3rL4nn.

В v1.4 было очень легко создать вкладку (и легко найти документацию). Интересно, почему они изменили ее и не предоставили документы.

person Elia Weiss    schedule 10.05.2016
comment
Решение, которое я предоставил, возвращает строку/html непосредственно в часть «контента» страницы. Ваш лучше, если вы можете использовать файл tpl для создания представления. Если нет, то это способ принудительно вставить что-то в область содержимого. Я не могу вспомнить, так как это было так давно, но я думаю, что если у вас нет модели данных, то после вызова initContent будет выдаваться ошибка, которая также была проблемой. - person Amb3rL4nn; 15.05.2016