2014-12-11 4 views
0

Я пытаюсь создать собственный редактор-инспектор, который должен иметь возможность загружать данные через контроллер. Для этого я вынести LINK-тег - как Neos делает - в заголовке: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 определяется для размеров, там работает ...

Как я должен настроить это?

ответ

0

Попробуйте ввести определение вашего поставщика маршрута выше neos в главном Routs.yaml. Проверьте свои данные/журналы/System_Development.log, если он соответствует тому, что должен.

Hm, и удалить эту часть для вашего Vendor.Package:

variables: 
    'defaultUriSuffix': '.html' 
0

Благодаря Таркин. «Development-Log» был хорошим намеком :) Я думаю, что у меня есть это, и я поделюсь этим. Существует несколько конфигураций:

1) Тег LINK, отображаемый на странице TS2 - например, 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. Я не думаю, что это полезно и что должен быть другой способ.

Смежные вопросы