2016-06-17 4 views
0

Я хочу создать стандартное расширение typo3, но когда я создаю запись (или изменяю ее), я хочу что-то вычислить (в моем случае я хочу вызвать API карт Google для получения координат от заданного адреса).Extbase Hooks - выполнить код при создании записи

Так что я ищу крючок или что-то в этом роде. Есть идеи?

+1

Вы имеете в виду после создания записи из расширения extbase или любой записи контента в бэкэнд? –

+0

@TheF После создания записи содержимого в бэкэнд для моего расширения. (Как вы создаете любую запись контента, но только этот тип записи для моего расширения) – nbar

ответ

0

В моей в особом случае нет необходимости вычислять координаты при сохранении записи. Поэтому я просто использовал listAction в контроллере, проверьте, имеются ли координаты, и если вы не вызываете API Google (и отправляйте электронное письмо, если API Google не возвращает координаты).

В другом случае, когда новая запись поступает из плагина frontend, и я должен был что-то сделать с этими данными, я использовал createAction в контроллере. (Я не уверен, что createAction также вызывается, когда запись создается из бэкэнд.)

0

Может быть this answer Вам полезна.

Зарегистрируйте свой класс как data handling hook в своем расширении. Этот «называется« ПОСЛЕ всех команд командной строки »был выполнен. Возможно, вам нужно искать более подходящую.

Затем в вашем зарегистрированном Hook i.e. 'typo3conf/ext/your_ext/Classes/Hooks/AfterCreate.php' сделайте свой расчет. Надеюсь, это поможет вам на правильном пути.

1

Один из моих примеров проекта, может помочь вам подключиться к бэкэнд, когда запись была изменена.

в расширении файла ext_localconf.php

// Hook for cancellation 
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'EXT:femanager/class.tx_femanager_tcemainprocdm.php:tx_femanager_tcemainprocdm'; 

крюк файл class.tx_femanager_tcemainprocdm.php, где вы можете выполнить сценарий

class tx_femanager_tcemainprocdm{ 

    function processDatamap_postProcessFieldArray ($status, $table, $id, &$fieldArray, &$reference){ 
     // $status also called action like delete 
     // $table - table name of excute backend action 
     // $id - record UID 
     // $fieldArray - fields of your table 

     if($table = 'your_extension_table_name'){ 
      // your script 
     } 
    } 
} 

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

  • Нет связанных вопросов^_^