我需要获得实际的"常规记录存储页面ID".我发现了下面的snipplet,但即使在页面上设置了storagePid,变量也是空的.
$config = $this->configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
var_dump($config['persistence']['storagePid']);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
我写了一个扩展,并通过后端实现插件完成所有事情.
但是当我尝试通过typoscript实现我的扩展时,我每次都会收到此错误:
糟糕,发生错误!
无法确定默认控制器.请检查ext_localconf.php中的Tx_Extbase_Utility_Extension :: configurePlugin().
我不知道为什么..我尝试了不同的实现(根据tx_extbase_core_bootstrap-> run或tx_extbase_dispatcher-> dispatch以及附加信息而没有),当前的typoscript如下所示:
plugin.tx_graphichmenu {
settings {
menuUid = 1
}
}
lib.tx_graphichmenu = USER
lib.tx_graphichmenu {
userFunc = tx_extbase_core_bootstrap->run
extensionName = Graphichmenu
pluginName = Graphicmenu
controller = MenuController
action = showAction
}
temp.mainTemplate.subparts.stickyfooter < lib.tx_graphichmenu
Run Code Online (Sandbox Code Playgroud)
我双精度和三重检查一切,我发现没有一个单一的错......试过了没有"行动"和"调节器"的一部分,并没有什么改变
我在ext_localconf.php中的configurePlugin部分如下所示:
Tx_Extbase_Utility_Extension::configurePlugin(
$_EXTKEY,
'Graphicmenu',
array(
'Menu' => 'show',
),
// non-cacheable actions
array(
'Menu' => '',
)
);
Run Code Online (Sandbox Code Playgroud)
"show"动作没有参数.在那里我加载ts设置从我拿到对象的Uid显示
PS:每次更改后我都清除了缓存并删除了typo3conf中的"temp_CACHED _..."文件
我有域模型篮子和文章.如果我打电话给以下人员,我会收到一揽子文章.
$articlesInBasket = $basket->getArticles();
Run Code Online (Sandbox Code Playgroud)
如何使用TYPO3标准属性,如crdate和cruser_id.使用这样的东西会很好:
$basket->getCrUser();
$basket->getCrDate();
Run Code Online (Sandbox Code Playgroud) 我正在为一个网站编写TYPO3扩展程序.由于我使用的是Extbase Framework,因此我有一个Repository类(Tx_Extbase_Persistence_Repository),我连续执行两个SQL查询:
$query1 = $this->createQuery();
$query1->statement($sql1);
$res1 = $query1->execute();
$query2 = $this->createQuery();
$query2->statement($sql2);
$res1 = $query2->execute();
Run Code Online (Sandbox Code Playgroud)
双方$res1和$res2包含Tx_Extbase_Persistence_QueryResult.现在我想返回合并后的结果,我不知道如何完成.返回原始数组不是一个选项,因为我依赖于QueryResult类的函数,我也想避免组合sql(UNION,JOIN).我已经尝试过了:
$myResult = $this->objectManager->create('Tx_Extbase_Persistence_ObjectStorage')
foreach($res1 as $obj) {
$myResult->attach($obj);
}
//foreach $res2
Run Code Online (Sandbox Code Playgroud)
..但这会抛出一个错误("could not determine the child object type")
那么你如何正确地结合两个Tx_Extbase_Persistence_QueryResult?
编辑:
通过组合,我的意思是代替两个单独的QueryResults我想要只包含两个结果$query1以及$query2.遗憾的是,SQL-UNION或JOIN不是一个选项.
我正在使用TYPO3扩展feupload,它依赖于extbase.这是我第一次接触extbase.但问题是关于extbase的一般情况.
我希望TYPO3在查询中默认包含通常的"IN(当前页面)"pid检查,除非另有说明 - 但在extbase中似乎有所不同.或者至少在我的情况下,它不起作用.
在扩展中,有一个常量/设置设置,可以设置storagePid.这有效.但我们不希望为每个页面手动调整该参数.
persistence {
# cat=feupload/persistence; type=integer; label=Storage PID of records
storagePid =
}
Run Code Online (Sandbox Code Playgroud)
那么如何让extbase按预期自动获取当前页面的PID?
(子问题:我已经尝试在设置中设置plugin.tx_pluginname.persistence.storagePid.data = {page:uid},但这不起作用.TS看起来像什么工作?)
在我的extbase控制器操作中,我想在上传文件后重定向到另一个控制器/操作,所以我打电话
$this->redirect('index', 'Download', null, null, $this->settings['listView']);
Run Code Online (Sandbox Code Playgroud)
问题是,当前语言参数在重定向期间丢失.方法签名允许$arguments在第四个位置上的数组,但是如果我放在L那里
$this->redirect('index', 'Download', null, array('L' => $GLOBALS['TSFE']->sys_language_uid), $this->settings['listView']);
Run Code Online (Sandbox Code Playgroud)
重定向用扩展参数之类的东西包装它
&tx_myext_controller[L]=0
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何将当前语言添加到extbase重定向?
我是TYPO3上"新"MVC框架extbase的新手.
我正在尝试使用两个选择器创建一个简单的表单,一个用于"Schools",另一个用于"Programs".
我使用Extension Builder制作了两个模型,并且我能够列出各自列表模板中的所有学校和所有程序.
由于框架使用约定优于配置,我不知道如何构造一个能够从这两个模型获取数据并将它们传递给模板的Controller.
我想在模板中使用此代码:
<f:form name="form">
<f:form.select name="form" options="{schools}" optionValueField="uid" optionLabelField="school" />
<f:form.select name="form" options="{programs}" optionValueField="uid" optionLabelField="program" />
</f:form>
Run Code Online (Sandbox Code Playgroud)
我的控制器骨架:
/**
* action show
*
* @param \Vendor\Extension\Domain\Model\Form $form
* @return void
*/
public function showAction(\Vendor\Extension\Domain\Model\Form $form) {
// Some code
$this->view->assign('schools', $schools);
// Some code
$this->view->assign('programs', $programs);
}
Run Code Online (Sandbox Code Playgroud) 即使我能够通过findByUid()访问特定记录,我也无法找到所有()返回任何内容.
我已经注意到(并试图解决/设置)typoscript解决方案和记录存储页面错误,但没有任何成功.
为了您的方便,我正在使用TYPO3(当前版本)中的扩展构建器生成的虚拟扩展代码.我已经通过TYPO3配置ui手动添加数据进行了测试.
任何帮助将非常感激.
一切顺利,并提前感谢
马里奥
我必须对我的数据库进行一个相当复杂的查询,并且看起来extbase查询无法完成我需要的工作(例如,我需要所有带有article-count> 0的类别).所以我创建了一个查询并使用exec_SELECTgetRows执行它 - 现在,有没有办法将结果映射回实体?
我会感激任何提示.
$GLOBALS['TSFE']->pageNotFoundAndExit('');
Run Code Online (Sandbox Code Playgroud)
目前使用,但我想重定向到页面ID.
使用该命令redirectToUri,我找不到解决方案,或者没有工作.
码:
/**
* initialize action show
* @return void
*/
public function initializeShowAction() {
if ($this->request->hasArgument('xxx')) {
if ( $xxx=$this->xxxRepository->findByUid(
intval($this->request->getArgument('xxx'))
) ) {
$this->request->setArgument('xxx',$xxx);
return;
}
}
$GLOBALS['TSFE']->pageNotFoundAndExit('');
}
Run Code Online (Sandbox Code Playgroud) extbase ×10
typo3 ×9
php ×2
controller ×1
forms ×1
model ×1
plugins ×1
redirect ×1
typo3-6.2.x ×1
typo3-7.6.x ×1
typo3-flow ×1
typoscript ×1