在Powermail 2.x中创建动态字段

时间:2014-12-19 16:34:17

标签: typo3 typoscript extbase

enter image description here我对powermail 2.x扩展程序有疑问。

我的实际要求是,我有一个表单(自定义扩展程序),通过它我可以使用邮政编码搜索某些地方。因此,一旦用户提交了值(例如邮政编码),网站将被重定向到页面,我将该邮政编码下的所有可用位置列为链接。当用户点击该链接时,网站将被重定向到另一个我配置了powermail 2.x扩展名的页面。我要实现的是,基于点击的链接(我将通过链接传递place_id,每个地方都有一些会员类型)。我想在单选按钮中显示一组成员类型(从另一个表中获取)使用来自url的参数)。这个项目也应该在预览和邮件中。

我们可以使用$ GLOBALS [' TYPO3_CONF_VARS'] [' EXTCONF'] [' powermail'] [' PM_FieldHook&#39 ;]在powermail 1.6中?

我们如何在powermail 2.x ??

中实现相同的功能

任何帮助都会被挪用?

1 个答案:

答案 0 :(得分:2)

enter image description here

最后,我自己设法解决了这个问题。

你所要做的就是,

在powermial表单中添加一个新的复选框字段,在扩展选项卡中,您可以指定类似于lib.products的typoscript变量。

lib.products = CONTENT
lib.products {
table = pages
select {
  pidInList = xxx
}
renderObj = COA
renderObj {
  10 = COA
  10 {
    10 = TEXT
    10.dataWrap = {field:title}[\n]
  }
}
}

如果您希望在powermail字段中创建自定义字段类型,上面的代码将在前端生成动态单选按钮。

tx_powermail.flexForm.type.addFieldOptions.new = Name of the field
tx_powermail.flexForm.type.addFieldOptions.new.dataType = 1 (If it is an array)

之后添加以下的typoscript代码

plugin.tx_powermail.view {
 partialRootPath >
 partialRootPaths {
    10 = EXT:powermail/Resources/Private/Partials/
    20 = EXT:extension/Resources/Private/Partials/
   }
 }

并创建一个模板文件EXT:extension/Resources/Private/Partials/New.html。在该文件中,您可以包含字段(复选框单选按钮或选择框)。

之后

$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\SignalSlot\Dispatcher');
$signalSlotDispatcher->connect(
  'In2code\Powermail\Controller\FormController',
  'formActionBeforeRenderView',
  'HEV\Extension\Controller\FormController',
  'customfucntion',
   FALSE
);

我们必须实现powermail 2.X

中提供的信号槽

并在

/**
 * @param \In2code\Powermail\Domain\Model\Form $form
 * @param \In2code\Powermail\Controller\FormController $pObj
 */
public function manipulateMailObjectOnCreate($form, $pObj) {
    $sectionNr      = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP("SID");
    if ( !isset( $sectionNr ))
    return ;
    foreach ( $form as $forms ){
        foreach( $forms->getPages() as $key => $pages){
            foreach ( $pages->getFields() as $fields ){
                switch ( $fields->getType() ){
                    case "new":
                        $fields->setMandatory(TRUE);
                        $fields->setCreateFromTyposcript('lib.products');
                    break;
                }
            }
        }
    }
}