Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 23.05.2012, 19:54   #1
Ивано
Guest
 
Сообщений: n/a
Question Проверка введенных данных в TCA

Добрый день.
Стандартную проверку могу осуществить через:

//Проверка на цифры [формат только a-z,0-9,_]
'eval' => 'required,alphanum_x,nospace',

Но мне необходимо проверить существование записи в БД и если ее нет, то разрешить вставку (либо что-то другое, в зависимости от задачи)... Т.е. свого рода User Func Validation.
  Ответить с цитированием
Старый 24.05.2012, 15:37   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Есть проверки unique (глобально) / unique in pid (на странице, на ветке страниц).

Но эти проверки проверяют значение отдельного поля. "Что-либо другое" тут не сделаешь. Смотрите в сторону хуков на сохранение записи, например такой:
Код:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']
dmartynenko вне форума   Ответить с цитированием
Старый 25.05.2012, 10:55   #3
Ивано
Guest
 
Сообщений: n/a
По умолчанию

Как их подключить нашел...

И как использовать тоже нашел:

PHP код:
 function processDatamap_preProcessFieldArray(&$incomingFieldArray$table$id, &$tce)
    {    
        global 
$BE_USER$TYPO3_CONF_VARS;
    
        if(
$table == 'tx_text_element')
            echo 
"rewfew<script>alert('Привет, я нашел твое сохранение интересным')</script>";
    }
    
    function 
processDatamap_afterDatabaseOperations($status$table$id, &$fieldArray, &$tce)
    {
        global 
$BE_USER$TYPO3_CONF_VARS;
        
        if(
$table == 'tx_text_element')
        echo 
"rewfew<script>alert(2)</script>";
    }
        
        
    function 
processCmdmap_preProcess($command$table$id$fields, &$tce)
    {
        global 
$BE_USER$TYPO3_CONF_VARS;

        if(
$table == 'tx_text_element')
        echo 
"rewfew<script>alert(2)</script>";
    } 
Но вот как подключить валидацию и какой класс нужно использовать?
  Ответить с цитированием
Старый 25.05.2012, 11:54   #4
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Вас интересует это http://www.google.ru/search?hl=ru&q=typo3+using+hooks ?

Я обычно использую опыт других разработчиков. Поискал по слову "processCmdmap" среди установленных у меня экстов, среди них нашлись такие: comments, tt_news, dam, irfaq, templavoila. Думаю так вы сможете найти что-то похожее на то, что вам нужно сделать.
dmartynenko вне форума   Ответить с цитированием
Старый 25.05.2012, 19:51   #5
Ивано
Guest
 
Сообщений: n/a
Question

Да это то что нужно...


PHP код:

class tx_text{

        function 
processDatamap_postProcessFieldArray ($status$table$id, &$fieldArray, &$reference
     {    
}
      
      
      
    function 
processDatamap_preProcessFieldArray(&$incomingFieldArray$table$id, &$tce)
    {    
    
    }
    
    function 
processDatamap_afterDatabaseOperations($status$table$id, &$fieldArray, &$tce)
    {
        global 
$BE_USER$TYPO3_CONF_VARS;
        
    }
        
        
    function 
processCmdmap_preProcess($command$table$id$fields, &$tce)
    {
        global 
$BE_USER$TYPO3_CONF_VARS;
        
    }

Вот только никак не пойму, какая функция за какой момент отвечает...


Мне нужно:
1 момент открытия формы (после того как человек щелкнул на иконку править элемент и перешел в режим редактирования данных
2 момент сохранения формы (что бы проверить и вывести сообщение если есть ошибка)
  Ответить с цитированием
Старый 28.05.2012, 14:58   #6
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Смотрите исходники t3lib\class.t3lib_tcemain.php - там видно когда хуки вызываются и что в них передается. Вещи конечно не тривиальные, поразбираться придеться.

В наличии хука на событие открытия формы я вот сомневаюсь. Если вам нужно что-то очень специфическое, то может проще написать свой BE модуль со своей логикой?
dmartynenko вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TemplaVoila: Изменение Структуры Данных (DS). Вывод в (BE). thebat Общие вопросы 4 08.03.2019 15:12
Вывод данных в TCA brd Разработка расширений / TYPO3 extension development 2 23.02.2012 12:56
Проверка правильности значений в TCEforms для TCA полей типа "user" reva2 Разработка расширений / TYPO3 extension development 0 25.01.2008 14:50
Поля типа float в базе данных Алексей Общие вопросы 1 21.04.2005 16:13
Поля типа float в базе данных Алексей Общие вопросы 0 15.04.2005 15:36


Часовой пояс GMT +4, время: 23:33.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория