繁体   English   中英

如何将对象从存储库加载到 <f:form.select/> 在Typo3 6.2 Extbase扩展中

[英]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内核中不存在,因此必须先从您的扩展名或第三方扩展名中添加。 请执行以下操作:

  1. 在数据库中检查fe_users.zzz_deleted_sorting是否存在,如果存在,请将其名称更改为fe_users.sorting并将字段定义添加到ext_tables.sql文件中:

    排序int(11)DEFAULT'0'NOT NULL,

  2. 如果没有字段fe_users.zzz_deleted_sorting,则表明它已从数据库中删除。 请从第1点开始将SQL代码添加到ext_tables.sql,并使用安装工具执行数据库比较。 它将建议您创建一个新字段-fe_users.sorting。 请创建它。

另请检查数据库结构中是否还有其他重要区别。 数据库分析器将向您显示所有这些信息。

解决数据库问题后,如有任何更改,请提供反馈。 然后,我们可以继续下一个问题。

编辑:

数据库问题已解决,因此我们可以走得更远。

我显示了律师对象,但是选择仍然为空

由于未定义storagePid,可能会从数据库得到空响应。 Extension Builder可能已经为您创建了TypoScript配置。 请执行以下操作:

  1. 在扩展目录中找到文件Confiugration / TypoScript / constants.txt。

  2. 检查在BE中创建了哪些Page ID医生记录。

  3. 用适当的页面ID号填充storagePid。 StoragePid在路径中:plugin.tx_ [pluginkey] .persistence.storagePid。 它也应该由Extension Builder定义,但其值可能为空。

我发现了问题的第二个原因:
在我的<f:render...>我没有通过我的医生作为论点!

...arguments="{..., doctors:doctors}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM