选择通过Typoscript使用哪个视图

时间:2014-10-21 09:26:52

标签: view typo3 typoscript extbase

如果我有以下Typoscript让一个页面从控制器呈现一个动作,我是否也可以用它来设置另一个视图而不是默认值?

  151 = USER_INT
  151 {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    pluginName = Pi1
    extensionName = WdProducts
    controller = Products
    vendorName = Bitmotion
    action = showFromTyposcriptAction

    switchableControllerActions {
      Products {
        1 = showFromTyposcript
      }
    }

    settings =< plugin.tx_wdproducts.settings
    persistence =< plugin.tx_wdproducts.persistence
    view =< plugin.tx_wdproducts.view
    update =< plugin.tx_wdproducts.update
  }

呈现的视图为ShowFromTyposcript.html,但我想要查看Show.html。或者我可以使用setTemplatePathAndFilename从控制器设置另一个视图(已经尝试但没有让它工作)?

我使用TYPO3 6.2。

1 个答案:

答案 0 :(得分:1)

创建两个插件,即ShowFromTyposcriptShow,作为ext_localconf.php中的第一个使用所需的操作,因此您可以:

10 = USER
10 {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = WdProducts
  pluginName = ShowFromTyposcript
  vendorName = Bitmotion
}

20 = USER
20 {
  userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
  extensionName = WdProducts
  pluginName = Show
  vendorName = Bitmotion
}

其他方法是根据条件使用forwarding对其他操作的一个共同操作:

public function showFromTyposcriptAction(){
    if (intval(GeneralUtility::_GET('product'))>0){
        $this->forward('show');
    }
    ....
}


public function showAction(){
    $productUid = intval(GeneralUtility::_GET('product'));
    $product = $this->productRepository->finByUid($prodcutUid);
    ....
}