【问题标题】:TYPO3 set template view for controller actionTYPO3 为控制器操作设置模板视图
【发布时间】:2018-09-11 09:14:09
【问题描述】:

我想将列表操作的视图模板用于我的 listByYear 操作。我试过 setTemplatePathAndFilename 没有成功。它仍然找不到模板。

抱歉,未找到请求的视图。

技术原因是:没有找到模板。无法查看 解决了课堂上的行动“listByYear” "XXX\YYY\Controller\EventController"。

/**
  * action listByYear
  * @param \XXX\YYY\Domain\Model\Event $event
  *
  * @return void
  */
  public function listByYearAction(\XXX\YYY\Domain\Model\Event $event)
  {
    $date = $event->getStart();
    $events = $this->eventRepository->findByYear($date->format('Y'));
    $this->view->setTemplatePathAndFilename(
      'typo3conf/ext/' .
      $this->request->getControllerExtensionKey() .
      '/Resources/Private/Templates/Event/List.html'
    );
    debug('typo3conf/ext/' .
    $this->request->getControllerExtensionKey() .
    '/Resources/Private/Templates/Event/List.html');

    $this->view->assign('events', $events);

  }

如何让它使用列表的模板?

【问题讨论】:

    标签: typo3


    【解决方案1】:

    很简短的回答是,你不能。在您的操作触发之前,视图已经被初始化并被要求解析模板,实际上早在您可以影响它将查找的模板文件名的任何时间点之前。

    按照惯例将被解析的模板文件必须始终存在。这就是允许您的控制器操作呈现的原因。然后,您可以通过设置模板名称(操作)来覆盖模板文件,但我不建议您这样做。

    总体建议:使用默认的模板命名逻辑。如果您需要重用模板,请考虑重构您需要重用的模板部分,将它们放在部分模板中。

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多