Просмотр полной версии : Проверка введенных данных в TCA
Добрый день.
Стандартную проверку могу осуществить через:
//Проверка на цифры [формат только a-z,0-9,_]
'eval' => 'required,alphanum_x,nospace',
Но мне необходимо проверить существование записи в БД и если ее нет, то разрешить вставку (либо что-то другое, в зависимости от задачи)... Т.е. свого рода User Func Validation.
dmartynenko
24.05.2012, 15:37
Есть проверки unique (глобально) / unique in pid (на странице, на ветке страниц).
Но эти проверки проверяют значение отдельного поля. "Что-либо другое" тут не сделаешь. Смотрите в сторону хуков на сохранение записи, например такой:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']
Как их подключить нашел...
И как использовать тоже нашел:
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>";
}
Но вот как подключить валидацию и какой класс нужно использовать?
dmartynenko
25.05.2012, 11:54
Вас интересует это http://www.google.ru/search?hl=ru&q=typo3+using+hooks ?
Я обычно использую опыт других разработчиков. Поискал по слову "processCmdmap" среди установленных у меня экстов, среди них нашлись такие: comments, tt_news, dam, irfaq, templavoila. Думаю так вы сможете найти что-то похожее на то, что вам нужно сделать.
Да это то что нужно...
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 момент сохранения формы (что бы проверить и вывести сообщение если есть ошибка)
dmartynenko
28.05.2012, 14:58
Смотрите исходники t3lib\class.t3lib_tcemain.php - там видно когда хуки вызываются и что в них передается. Вещи конечно не тривиальные, поразбираться придеться.
В наличии хука на событие открытия формы я вот сомневаюсь. Если вам нужно что-то очень специфическое, то может проще написать свой BE модуль со своей логикой?
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot