标签: extbase

pi_getLL的TYPO3 Extbase代码?

在基于pi的扩展我有:$this->pi_getLL('languagekey')获取我的翻译变量.

什么是Extbase代码?

我知道如何在流体模板中执行此操作,但我需要在存储库中.

php typo3 extbase

5
推荐指数
1
解决办法
4126
查看次数

TYPO3 TCA select,items数组中的NULL值

我在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.但那些也不起作用.

我将不胜感激任何帮助.

typo3 fluid extbase

5
推荐指数
1
解决办法
2196
查看次数

来自其他Extension的TYPO3 Extbase getArguments

我有一个带有两个插件的扩展,我需要从两个插件访问getVars.

$this->request->getArguments();
Run Code Online (Sandbox Code Playgroud)

当然,上面的代码只给出了当前插件中的变量.

有谁知道如何从不同的插件访问Vars?

非常感谢!

干杯,

lufi

typo3 extbase

5
推荐指数
1
解决办法
4457
查看次数

删除sys_file_reference时删除文件

我正在编写一个扩展,允许在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)

有谁知道如何解决这个问题?会有很多上传,如果管理员删除了一个,关联的文件也应该删除...

预先感谢您的帮助 :)

typo3 extbase typo3-6.2.x

5
推荐指数
1
解决办法
1946
查看次数

TYPO3 Extbase:如何对子对象进行排序

我有一个Extbase模型文章和一个1:n关系产品。在条款TCA中,我配置了一个内联字段。我想在我的文章模板中显示所有相关产品。这些由uid整理。我如何才能将子对象的排序更改为字段排序,以便能够对其进行手动排序。(以后端形式可以进行排序,仅显示通过字段排序进行的排序是不可能的)

谢谢,卢卡斯

typo3 extbase

4
推荐指数
2
解决办法
6589
查看次数

获取扩展中当前页面的父页面

有没有办法通过php从子页面获取所有父ID?

...
Page
Page 12
    Subpage 21
    Subpage 22
        CurrentPage 23
Run Code Online (Sandbox Code Playgroud)

想得到12,21

php typo3 typoscript extbase

4
推荐指数
1
解决办法
1697
查看次数

TYPO3:如何通过控制器初始化操作和页面渲染器添加 css 和 js 文件?

我在控制器级别使用 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。有什么建议?

rendering typo3 webpage-rendering extbase

4
推荐指数
1
解决办法
4564
查看次数

关于如何为 ext:news 的列表和详细视图设置路由增强器的良好实践?

前提

ext:news 列表视图插件位于 www.domain.com/news [ID 9] 页面上,详细视图位于 www.domain.com/article [ID 39] 上。

按照官方示例(docs.typo3.org)

我尝试了功能描述的“Extbase插件增强器”示例,但这引起了一些问题:

  • 页面浏览器链接到第 2 页有一个 cHash:news/list/2?cHash=123456789
  • 从第 2 页到第 1 页的 pagebrowser 链接有很多获取参数: news?tx_news_pi1%5Baction%5D=list&tx_news_pi1%5Bcontroller%5D=News&cHash=123456789 。如果没有routeEnhancer,它就只是没有任何获取参数的“新闻”。
  • 详细视图的链接有一个 cHash:article/blog/9?cHash=52e8a4b7c6318cfe0273e7eab374e9ae
  • 网址包含不需要的段(“列表”+“博客”)
  • acticle url 不包含新闻标题

造成某些问题的原因之一可能是分页器未在其链接中指定控制器: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 extbase typo3-extensions tx-news typo3-9.x

4
推荐指数
1
解决办法
3363
查看次数

如何使用错误处理配置从 Extbase 返回正确的 404 错误

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 extbase typo3-9.x

4
推荐指数
1
解决办法
1038
查看次数

TYPO3 更新到 11.5.16 和 PHP 8.1 后抛出错误 (get_class_methods(): Argument #1

从 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)

typo3 extbase typo3-11.x

4
推荐指数
1
解决办法
3231
查看次数