在TYPO3 6.2中,如何在Extbase action controller和Fluid template partial之间丢失前端用户组列表?
我正在使用TYPO3 CMS 6.2.12和Extension Builder 6.2.0对报表类进行建模,并构建一个扩展来管理它 领域驱动的设计要求之一是报表作者必须是登录的前端用户。第二个要求是,作者在输入报表信息时,从前端用户组列表中选择一个组 到目前为止,ExtensionBuilder在生成代码和文件方面完成了大部分工作。它构建了报告模型、所有动作控制器、流体模板和部分。这是一个巨大的飞跃。我没有让它为前端用户或他们的组构建模型,而是选择从现有类中注入依赖项。我现在正试图解决用户和用户组的需求,主要是通过向“newAction”控制器和“FormFields”的Fluid部分添加代码 在我的开发服务器上,我可以成功地输入新报告。我提出了一个新报告的网络表单;我可以输入信息并提交新报告;新创建的报告显示在列表页面和数据库中;我可以在web浏览器中显示单个报告 我现在的问题是前端用户组列表不会出现在新报表的web表单中 在过去的几天里,我一直在尝试各种各样的实验在TYPO3 6.2中,如何在Extbase action controller和Fluid template partial之间丢失前端用户组列表?,typo3,fluid,extbase,typo3-6.2.x,typo3-extensions,Typo3,Fluid,Extbase,Typo3 6.2.x,Typo3 Extensions,我正在使用TYPO3 CMS 6.2.12和Extension Builder 6.2.0对报表类进行建模,并构建一个扩展来管理它 领域驱动的设计要求之一是报表作者必须是登录的前端用户。第二个要求是,作者在输入报表信息时,从前端用户组列表中选择一个组 到目前为止,ExtensionBuilder在生成代码和文件方面完成了大部分工作。它构建了报告模型、所有动作控制器、流体模板和部分。这是一个巨大的飞跃。我没有让它为前端用户或他们的组构建模型,而是选择从现有类中注入依赖项。我现在正试图解决用户和用户
- Extbase Fluid书中的[“博客示例之旅”][blogexample]提供了一个很好的例子,让我相信我所尝试的应该是可行的。[“替代路线:创建新帖子”][newposting]在阅读了本章其余部分后,作为指南特别有用
- TYPO3 Wiki的[“依赖项注入”文章][depinj]似乎说我们只需要
注释,尽管这篇文章警告不要使用@inject
,但我发现该方法的重新定位版本在下面的测试中变得很有用t3lib_div::makeInstance
- 下面代码中的流体调试指令来自TYPO3 Wiki的[Fluid page][Fluid]。不过,在测试过程中,它似乎只给出了打字脚本设置变量
- 我发现了一些堆栈溢出的文章,包括Vertex询问的[“如何在VHS的AllowViewHelper中设置部分中的FrontendUserGroup?”[so1],[“如何:在typo3 v4.5中使用Tx_Extbase_Domain_Repository_FrontendUserRepository”][so2]由新手Qs询问的[“typo3-调用另一个存储库”][so3]由Jeppe Donslund询问的,以及[cili要求“Typo3 6.1 Extbase-选择所有fe用户”][so4]。上一篇文章给出了我在测试中使用的
片段,如下所示。倒数第二篇文章给出了警告,“添加依赖项注入后,必须清除缓存!“它没有说是哪个缓存,这导致了我彻底地清除了这次测试所能想到的一切$FeuerRepository
从myextension\Resources\Private\Partials\Report\FormFields.html:
{u all}
{author.username}
{authortest.username}
从新报告的web表单中的HTML输出:
作者组Id
您的变量
不会传递给分部,因此{groups}
不是内部变量
/**
* reportRepository
*
* @var \MyVendor\Myextension\Domain\Repository\ReportRepository
* @inject
*/
protected $reportRepository = NULL;
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
* @inject
*/
protected $frontendUserRepository;
/**
* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
* @inject
*/
protected $frontendUserGroupRepository;
/**
* action new
*
* @param \MyVendor\Myextension\Domain\Model\Report $newReport
* @ignorevalidation $newReport
* @return void
*/
public function newAction(\MyVendor\Myextension\Domain\Model\Report $newReport = NULL) {
$this->view->assign('newReport', $newReport);
$this->view->assign('author', $this->frontendUserRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']));
$this->view->assign('groups', $this->frontendUserGroupRepository->findAll());
$feUserRepository = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance( 'TYPO3\\CMS\\Extbase\\Domain\\Repository\\FrontendUserRepository' );
$user = $feUserRepository->findByUid( 1 );
$this->view->assign('authortest', $user);
}
<f:form action="create" name="newReport" object="{newReport}">
<f:render partial="Report/FormFields" />
<f:form.submit value="Create new" />
</f:form>
<f:debug title="All available variables">{_all}</f:debug>
{author.username}<br />
{authortest.username}<br />
<label for="authorGroupId"><f:translate key="tx_myextension_domain_model_report.author_group_id" /></label><br />
<f:form.select property="authorGroupId" options="{groups}" optionLabelField="title" optionValueField="uid" /><br />
<br />
<br />
<label for="authorGroupId">Author Group Id</label><br />
<select name="tx_myextension_myextensionauthorplugin[newReport][authorGroupId]"><option value=""></option>
</select><br />
<f:render partial="Report/FormFields" arguments="{groups : groups}" />