![](/img/trans.png)
[英]TYPO3 | Extbase / Fluid - How can I fill <f:form.select.optgroup> from a domain object / database?
[英]How to load objects from a repository into <f:form.select/> in Typo3 6.2 Extbase Extension
首先是我的具体问题: 创建新约会时,我应该怎么做才能在所有医生之间进行选择?
现在的背景:
从Typo 4.7更新到6.2之后,我遇到了一些类似的问题:
创建新的Appointment
我需要一个选择字段,用户可以在其中选择Doctor
。
所以我做了这个:
<f:form.select property="doctor" options="{doctors}" optionLabelField="lastName" />
我的Extensionbuilder设置:
Appointment
是具有以下类型的Doctor
关系的实体:“ n:1”
Doctor
是扩展\\ TYPO3 \\ CMS \\ Extbase \\ Domain \\ Model \\ FrontendUser的实体
在我的AppointmentController中,
/**
* doctorRepository
*
* @var \Vendor\Extensionname\Domain\Repository\DoctorRepository
* @inject
*/
protected $doctorRepository = NULL;
在newAction
我写道:
$doctors = $this->doctorRepository->findAll();
...
$this->view->assignMultiple(array(
'doctors' => $doctors,
));
这样,即使我有一些类型为Doctor
fe_users,也不会在我的选择字段中显示任何项目 。 然后我尝试通过执行以下操作来查看$doctors
内部的内容:
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($doctors);
但它说:
Caught exception: Unknown column 'fe_users.sorting' in 'order clause'
编辑:接受的答案解决了这个问题。
然后显示律师对象,但选择仍然为空。 稍后我自己找到了该问题的答案(请参阅我自己的答案)。
我认为首先您需要解决缺少列的问题。 对我来说,似乎在TYPO3更新期间,数据库列fe_users.sorting被删除了。 也许在ext_tables.sql文件中未正确定义它,数据库分析仪建议删除它? 该字段在TYPO3内核中不存在,因此必须先从您的扩展名或第三方扩展名中添加。 请执行以下操作:
在数据库中检查fe_users.zzz_deleted_sorting是否存在,如果存在,请将其名称更改为fe_users.sorting并将字段定义添加到ext_tables.sql文件中:
排序int(11)DEFAULT'0'NOT NULL,
如果没有字段fe_users.zzz_deleted_sorting,则表明它已从数据库中删除。 请从第1点开始将SQL代码添加到ext_tables.sql,并使用安装工具执行数据库比较。 它将建议您创建一个新字段-fe_users.sorting。 请创建它。
另请检查数据库结构中是否还有其他重要区别。 数据库分析器将向您显示所有这些信息。
解决数据库问题后,如有任何更改,请提供反馈。 然后,我们可以继续下一个问题。
编辑:
数据库问题已解决,因此我们可以走得更远。
我显示了律师对象,但是选择仍然为空
由于未定义storagePid,可能会从数据库得到空响应。 Extension Builder可能已经为您创建了TypoScript配置。 请执行以下操作:
在扩展目录中找到文件Confiugration / TypoScript / constants.txt。
检查在BE中创建了哪些Page ID医生记录。
用适当的页面ID号填充storagePid。 StoragePid在路径中:plugin.tx_ [pluginkey] .persistence.storagePid。 它也应该由Extension Builder定义,但其值可能为空。
我发现了问题的第二个原因:
在我的<f:render...>
我没有通过我的医生作为论点!
...arguments="{..., doctors:doctors}"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.