Typo3扩展PHP视图
使用此链接中的信息:Typo3扩展PHP视图,typo3,fluid,typo3-7.6.x,Typo3,Fluid,Typo3 7.6.x,使用此链接中的信息: 我尝试创建一个操作来输出JSON 我有一个具有列表操作的普通控制器: public function listAction() { $storelocators = $this->storelocatorRepository->findAll(); $this->view->assign('storelocators', $storelocators); } 在ext/my_storelocator/Classes/View/st
我尝试创建一个操作来输出JSON 我有一个具有列表操作的普通控制器:
public function listAction()
{
$storelocators = $this->storelocatorRepository->findAll();
$this->view->assign('storelocators', $storelocators);
}
在ext/my_storelocator/Classes/View/storelocator
中,我有一个classList.php
:
<?
class Tx_MyStorelocator_View_Storelocator_List extends Tx_Extbase_MVC_View_AbstractView {
public function render() {
return 'Hello World';
}
}
所以我猜路径有问题。或者问题出在哪里
编辑:扩展信息
供应商:我的关键字:my_storelocator
控制器:不确定(我用扩展名创建了它,所以我想我的控制器名是Storelocator)
行动:列出
根据我的理解,像
Tx\u MyStorelocator\u View\u Storelocator\u List这样的类名应该是正确的。但是它不起作用您的路径语法可能已经过时了。不要在Classes/View/Storelocator/List.php
中编写render()
函数,而是尝试在Classes/Controller/StorelocatorController.php
文件中编写listAction()
函数。如果您使用通常的“列表、创建、编辑…”等操作创建聚合模型,扩展生成器应该已经为您创建了此文件
回顾并阅读以下章节,创建第一个扩展,以获取提示
请记住,文档和扩展生成器生成的PHP代码文件之间存在不匹配。使用Extbase和Fluid开发TYPO3扩展时,有些部分是最新的,其他部分仍然使用旧语法。您的路径语法可能已经过时。不要在Classes/View/Storelocator/List.php
中编写render()
函数,而是尝试在Classes/Controller/StorelocatorController.php
文件中编写listAction()
函数。如果您使用通常的“列表、创建、编辑…”等操作创建聚合模型,扩展生成器应该已经为您创建了此文件
回顾并阅读以下章节,创建第一个扩展,以获取提示
请记住,文档和扩展生成器生成的PHP代码文件之间存在不匹配。使用Extbase和Fluid开发TYPO3扩展有一些部分是最新的,其他部分仍然使用旧语法。首先,TYPO3现在有一个内置的JSON视图,这里有详细描述:。它允许您轻松定义要渲染的属性
错误消息意味着您的控制器仍指向TemplateView,因为如果TemplateView找不到已定义的模板文件,则会抛出该错误
可以指定要在控制器内渲染的视图。您可以通过$defaultViewObjectName属性设置默认视图,如下所示:
/**
* @var string
*/
protected $defaultViewObjectName = '\TYPO3\CMS\Fluid\View\TemplateView';
您还可以在控制器内部初始化操作中设置它,如下所示:
public function initializeExportPDFAction(){
$this->defaultViewObjectName = 'Vendor\Extension\View\FileTransferView';
}
(然而,我还没有找到一种从actions中定义模板的方法,如果评论中有任何提示,我将不胜感激)首先,TYPO3现在有一个内置的JSON视图,在这里详细描述:。它允许您轻松定义要渲染的属性
错误消息意味着您的控制器仍指向TemplateView,因为如果TemplateView找不到已定义的模板文件,则会抛出该错误
可以指定要在控制器内渲染的视图。您可以通过$defaultViewObjectName属性设置默认视图,如下所示:
/**
* @var string
*/
protected $defaultViewObjectName = '\TYPO3\CMS\Fluid\View\TemplateView';
您还可以在控制器内部初始化操作中设置它,如下所示:
public function initializeExportPDFAction(){
$this->defaultViewObjectName = 'Vendor\Extension\View\FileTransferView';
}
(但是,我还没有找到从actions中定义模板的方法,请提供评论中的任何提示)您需要为控制器的HTML视图创建一个空文件,例如Resources/Private/template/Storelocator/List.HTML
,即使您不打算使用HTML视图,或者您只是自己返回内容(这很好)
原因仅仅是技术上的限制。您需要为控制器的HTML视图创建一个空文件,例如Resources/Private/Template/Storelocator/List.HTML
,即使您不打算使用HTML视图,或者您只是自己返回内容(这很好)
原因只是技术上的限制。可能已经过时,这是我的问题。。另一方面,我有一个带有listAction()
的控制器。我可以在那里输出json并使用带有disableAllHeaderCode
的页面类型。但是当没有模板时,它仍然会加载模板和可能的html注释/或错误。我是否可以禁用模板(和呈现)?向listAction添加一条返回语句。您可以在这里以字符串形式返回JSON对象。TYPO3评估动作的返回数据类型,如果返回数据类型为void,则尝试渲染视图。因此,只需返回一些内容,即使是空字符串,也不会调用view->render方法,因为缺少List.html模板;)这不是问题所在。如果该操作不存在或不执行,@nbar将不会出现此错误。@Lasse Yes我发现当我有一个空的List.html+一些拼写错误脚本来禁用html注释时,这是有效的。谢谢你用错了。如果没有要渲染的内容,请指向您自己的视图,而不是启动模板视图。可能它已过期,这是我的问题。。另一方面,我有一个带有listAction()
的控制器。我可以在那里输出json并使用带有disableAllHeaderCode
的页面类型。但是当没有模板时,它仍然会加载模板和可能的html注释/或错误。我是否可以禁用模板(和呈现)?向listAction添加一条返回语句。您可以在这里以字符串形式返回JSON对象。TYPO3评估动作的返回数据类型,如果返回数据类型为void,则尝试呈现vie