0

我尝试创建一个自己的检查器编辑器,它应该能够通过控制器加载数据。为此,我在标题中呈现了一个 LINK 标记——就像 Neos 所做的那样:

<link rel="vendor-package-backend-content" href="http://typo3-neos-1.1.x.dev/vendor.package/backend/content/load />

创建了一个控制器Packages/Application/Vendor.Package/Classes/Vendor/Package/Controller/Backend/ContentController.php

这是文件Configuration/Routes.yaml

-
  name: 'TYPO3 Neos'
  uriPattern: '<TYPO3NeosSubroutes>'
  subRoutes:
    'TYPO3NeosSubroutes':
      package: 'TYPO3.Neos'
      variables:
        'defaultUriSuffix': '.html'

-
  name: 'Vendor Package
  uriPattern: '<VendorPackageSubroutes>'
  subRoutes:
    'VendorPackageSubroutes':
      package: 'Vendor.Package'
      variables:
        'defaultUriSuffix': '.html'

这里的文件Packages/Application/Vendor.Package/Configuration/Routes.yaml

-
  name:  'Backend'
  uriPattern: 'vendor.package/<BackendSubRoutes>'
  defaults:
    '@package':    'Vendor.Package'
    '@action':     'index'
    '@format':     'html'
  subRoutes:
    'BackendSubRoutes':
      package: 'Vendor.Package'
      suffix:  'Backend'

最后是文件Packages/Application/Vendor.Package/Configuration/Routes.Backend.yaml

-
  name: 'Backend Content Controller'
  uriPattern: 'backend/content(/{@action})'
  defaults:
    '@package':    'Vendor.Package'
    '@controller': 'Backend\Content'
  appendExceedingArguments: TRUE

如果现在调用 URL:http://domain.com/vendor.package/backend/content/index将引发“找不到页面”错误。我必须停用TYPO3.Flow.error.exceptionHandler.renderingGroups.notFoundExceptions以查看更多详细信息:

抱歉,找不到您请求的页面。技术细节:

无法通过给定的 URI 段“vendor.package”找到内容维度“语言”的预设。(参考代码:2014121115590523bc78)

但我不知道路径段是如何/neos为尺寸定义的,它在那里工作......</p>

我必须如何配置它?

4

2 回答 2

0

尝试将您的供应商路由定义放在 main 中的 neos 之上Routs.yaml。检查您的 Data/Logs/System_Development.log 是否符合应有的要求。

嗯,并为您的 Vendor.Package 删除这部分:

  variables:
    'defaultUriSuffix': '.html'
于 2014-12-12T08:15:30.843 回答
0

谢谢塔金。开发日志是一个很好的提示 :) 我想我已经明白了,我会分享这个。有几个配置可以设置:

1) 通过 TS2 页面呈现的 LINK-tag - 就像 Neos 一样 - 在需要登录的标题中。

<f:security.ifAccess resource="Vendor_Package_BackendAccess">
    <link rel="vendor-package-backend-content" href="http://typo3-neos-1.1.x.dev/vendor.package/backend/content/load />
</f:security.ifAccess>

2) 控制器Packages/Application/Vendor.Package/Classes/Vendor/Package/Controller/Backend/ContentController.php

3)文件中的设置Configuration/Routes.yaml

-
  name: 'Vendor Package
  uriPattern: '<VendorPackageSubroutes>'
  subRoutes:
    'VendorPackageSubroutes':
      package: 'Vendor.Package'
      variables:
        'defaultUriSuffix': '.html'

4) 文件Packages/Application/Vendor.Package/Configuration/Routes.yaml

-
  name:  'Backend'
  uriPattern: 'vendor.package/<BackendSubRoutes>'
  defaults:
    '@package':    'Vendor.Package'
    '@action':     'index'
    '@format':     'html'
  subRoutes:
    'BackendSubRoutes':
      package: 'Vendor.Package'
      suffix:  'Backend'

5) 文件Packages/Application/Vendor.Package/Configuration/Routes.Backend.yaml

-
  name: 'Backend Content Controller'
  uriPattern: 'backend/content(/{@action})'
  defaults:
    '@package':    'Vendor.Package'
    '@controller': 'Backend\Content'
  appendExceedingArguments: TRUE

6) 文件Packages/Application/Vendor.Package/Configuration/Policy.yaml

resources:
  methods:
    Vendor_Package_BackendAccess: 'method(Vendor\Package\Controller\Backend\ContentController->.*Action())'

acls:
  'TYPO3.Neos:Editor':
    methods:
      Vendor_Package_BackendAccess: GRANT

7) 至少Packages/Application/Vendor.Package/Configuration/Settings.yaml

  Flow:
    security:
      authentication:
        providers:
          Typo3BackendProvider:
            requestPatterns:
              controllerObjectName: 'TYPO3\Neos\Controller\.*|TYPO3\Neos\Service\.*|TYPO3\Media\Controller\.*|Vendor\Package\Controller\Backend\.*'

8)还有一件事Packages/Application/Vendor.Package/Configuration/Settings.yaml,否则你会得到一个缺少维度映射的错误原因。

  TYPO3CR:
    contentDimensions:
      'language':
        presets:
          'vendor.packages':
            label: ''
            values: ['mul_ZZ']
            uriSegment: 'vendor.packages'

这将是答案的第一部分:)

但是还有一些问题:

1)这将至少是一个包。所以我想知道为什么我必须在 中设置东西Configuration/Routes.yaml,这不会是安装过程的一部分(?)。

2)在这个例子中,它需要覆盖路径Flow.security.authentication.providers.Typo3BackendProvider.requestPatterns.controllerObjectName。我不认为这是有用的,而且必须有另一种方法。

于 2014-12-12T10:04:19.427 回答