在基于pi的扩展我有:$this->pi_getLL('languagekey')获取我的翻译变量.
什么是Extbase代码?
我知道如何在流体模板中执行此操作,但我需要在存储库中.
我在Typo3 4.5中扩展了extbase和fluid.现在要插入一些数据我使用后端模块'list',它使表格的TCA形成一些表格.要使选择框可选,我在外表之前插入一个项目,如下所示:
'feuser' => array(
'exclude' => 0,
'label' => 'LLL:EXT:yes/Resources/Private/Language/locallang_db.xml:tx_yes_domain_model_schools.feuser',
'config' => array(
'type' => 'select',
'items' => array(
array('', NULL),
),
'foreign_table' => 'fe_users',
'maxitems' => 1,
),
),
Run Code Online (Sandbox Code Playgroud)
现在,因为我的数据库中有一个关系(含有NULL),我必须插入一个NULL值.但是像这样它不起作用.我也试过'',""和0.但那些也不起作用.
我将不胜感激任何帮助.
我有一个带有两个插件的扩展,我需要从两个插件访问getVars.
$this->request->getArguments();
Run Code Online (Sandbox Code Playgroud)
当然,上面的代码只给出了当前插件中的变量.
有谁知道如何从不同的插件访问Vars?
非常感谢!
干杯,
lufi
我正在编写一个扩展,允许在TYPO3实例的前端和后端上传文件.上载在两个视图中都有效,但如果管理员想要在列表视图的后端删除上载,则不会删除位于Web服务器硬盘上的"物理"文件,只会删除sys_file_reference记录.
是否有可能告诉tca,如果删除上传记录,还应删除相关文件?我也尝试使用以下代码实现一个插槽但没有任何反应:
ext_localconf.php:
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher')->connect(
'TYPO3\CMS\Extbase\Persistence\Generic\Backend',
'afterRemoveObject',
'Kmi\feupload\Slots\MyAfterRemoveObjectSlot',
'myAfterRemoveObjectMethod'
);
Run Code Online (Sandbox Code Playgroud)
类/插槽/ MyAfterRemoveObjectSlot.php:
namespace Kmi\feupload\Slots;
class MyAfterRemoveObjectSlot {
public function myAfterRemoveObjectMethod($object) {
// do something
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($object);
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?会有很多上传,如果管理员删除了一个,关联的文件也应该删除...
预先感谢您的帮助 :)
我有一个Extbase模型文章和一个1:n关系产品。在条款TCA中,我配置了一个内联字段。我想在我的文章模板中显示所有相关产品。这些由uid整理。我如何才能将子对象的排序更改为字段排序,以便能够对其进行手动排序。(以后端形式可以进行排序,仅显示通过字段排序进行的排序是不可能的)
谢谢,卢卡斯
有没有办法通过php从子页面获取所有父ID?
...
Page
Page 12
Subpage 21
Subpage 22
CurrentPage 23
Run Code Online (Sandbox Code Playgroud)
想得到12,21
我在控制器级别使用 TYPO3 8 的新页面渲染器通过 initializeAction 添加扩展特定的 css 和 js 文件:
public function initializeAction()
{
$extPath = ExtensionManagementUtility::siteRelPath(
$this->request->getControllerExtensionKey()
);
$extJs = $extPath . 'Resources/Public/Js/ext_booking_manager.min.js';
$extCss = $extPath . 'Resources/Public/Css/ext_booking_manager.css';
/** @var PageRenderer $pageRenderer */
$pageRenderer = $this->objectManager->get(PageRenderer::class);
$pageRenderer->addCssFile($extCss);
$pageRenderer->addJsFooterFile(
$extJs, 'text/javascript', false
);
}
Run Code Online (Sandbox Code Playgroud)
这有时工作正常,但只是有时。这意味着有时 css 文件和 js 文件会被正确添加,有时如果我重新加载页面,则文件将无法正确添加。有什么不对?
对于像 TYPO3 7 这样的旧版本,我使用了类似的东西:
public function initializeAction()
{
$extPath = ExtensionManagementUtility::siteRelPath(
$this->request->getControllerExtensionKey()
);
$extJs = $extPath . 'Resources/Public/Js/ext_booking_manager.min.js';
$GLOBALS['TSFE']->getPageRenderer()->addJsFooterFile(
$extJs, 'text/javascript', false
);
parent::initializeAction();
}
Run Code Online (Sandbox Code Playgroud)
但这将不再适用于 TYPO3 8。有什么建议?
ext:news 列表视图插件位于 www.domain.com/news [ID 9] 页面上,详细视图位于 www.domain.com/article [ID 39] 上。
我尝试了功能描述的“Extbase插件增强器”示例,但这引起了一些问题:
造成某些问题的原因之一可能是分页器未在其链接中指定控制器:news?tx_news_pi1[@widget_0][currentPage]=2&cHash=123456789
我将其拆分为两个单独的路由增强器(Extbase + 插件),删除了“defaultController”、“defaults”、“requirements”段并添加了“aspects”:
routeEnhancers:
NewsDetail:
type: Extbase
limitToPages: [39]
extension: News
plugin: Pi1
routes:
- { routePath: '/{news_title}', _controller: 'News::detail', _arguments: {'news_title': 'news'} }
aspects:
news_title:
type: PersistedAliasMapper
tableName: 'tx_news_domain_model_news'
routeFieldName: 'path_segment'
NewsList:
type: Plugin
limitToPages: [9]
routePath: '/{@widget_0/currentPage}'
namespace: 'tx_news_pi1'
aspects:
'@widget_0/currentPage':
type: …Run Code Online (Sandbox Code Playgroud) TYPO3版本:9.5.4
目标:我想从 Extbase 控制器返回 404 错误,并使用正确的状态代码等,该控制器使用我在站点配置中设置的 404 错误处理配置。
检查 404 处理是否有效:我在站点配置中设置了 404 错误处理。这应该显示特定页面的内容。如果我访问 www.my-domain.local/asdfasdf,我将收到 404 状态代码,其中包含我指定的页面内容
我在 Extbase 中尝试了什么:
# In the action
return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
$GLOBALS['TYPO3_REQUEST'],
'The requested page does not exist',
['code' => PageAccessFailureReasons::PAGE_NOT_FOUND]
);
Run Code Online (Sandbox Code Playgroud)
结果:
变体 A(站点配置中无错误处理):异常,状态代码 404 > 正常
变体 B(显示页面内容的错误处理):页面呈现状态为 200,显示所述页面的正常内容(页眉、页脚等)> 不正常
问题:如何让 Extbase 执行与普通页面相同的操作?
从 TYPO3 9.5.x LTS 和 PHP 7.4 更新到 TYPO3 11.5.16 和 PHP 8.1 后,我收到此错误:
get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
Run Code Online (Sandbox Code Playgroud)
我知道这是关于我的扩展(当我禁用它时错误消失),但进一步的调试信息我没有帮助我:
in /html/typo3/typo3_src-11.5.16/typo3/sysext/extbase/Classes/Mvc/ExtbaseRequestParameters.php line 302
// todo: this is nonsense! We can detect a non existing method in
// todo: \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin, if necessary.
// todo: At this point, we want to have a getter for a fixed value.
$actionMethodName = $this->controllerActionName . 'Action';
$classMethods = get_class_methods($controllerObjectName);
if (is_array($classMethods)) {
foreach ($classMethods …Run Code Online (Sandbox Code Playgroud) extbase ×10
typo3 ×10
php ×2
typo3-9.x ×2
fluid ×1
rendering ×1
tx-news ×1
typo3-11.x ×1
typo3-6.2.x ×1
typoscript ×1