rtgx

TCA príklady

Podmienka pre výber položiek select boxu

Zadanie

Vo vytvorenom module pridávame novú vlastnosť tabuľke tx_rtgshop_products. Je typu select, pričom potrebujeme obmedziť podmienku výberu položiek do tohoto selectu a to podľa týchto podmienok:

  1. záznamy tabuľky tx_rtgshop_products z aktuálnej stránky
  2. záznamy, ktoré nemajú nastavenú položku tx_rtgextshop2_uid_product
  3. bez aktuálneho (upravovaného) záznamu
  4. triedené podľa uid

Riešenie

Súbor ext_tables.php (skrátené).

$tempColumns = Array (
"tx_rtgextshop2_uid_product" => Array (
"exclude" => 1,
"label" => "LLL:EXT:rtgextshop2/locallang_db.xml:tx_rtgshop_products.tx_rtgextshop2_uid_product",
"config" => Array (
"type" => "select",
"items" => Array (
Array("",0),
),
"foreign_table" => "tx_rtgshop_products",
"foreign_table_where" => "AND tx_rtgshop_products.pid=###CURRENT_PID### ORDER BY tx_rtgshop_products.uid",
"size" => 1,
"minitems" => 0,
"maxitems" => 1,
)
),
);

t3lib_div::loadTCA("tx_rtgshop_products");
t3lib_extMgm::addTCAcolumns("tx_rtgshop_products",$tempColumns,1);

$TCA['tx_rtgshop_products']['columns']['tx_rtgextshop2_uid_product']['config']['foreign_table_where'] = '
AND tx_rtgshop_products.pid = ###CURRENT_PID###
AND tx_rtgshop_products.tx_rtgextshop2_uid_product = 0
AND tx_rtgshop_products.uid != ###THIS_UID###
ORDER BY tx_rtgshop_products.uid
';

Ďalšie vlastnosti foreign_table_where

  1. ###REC_FIELD_[fieldname]###

  2. ###THIS_UID### - uid aktuálne ho záznamu (nový = 0).

  3. ###CURRENT_PID### - uid aktuálnej stránky (pid záznamu).

  4. ###STORAGE_PID###

  5. ###SITEROOT###

  6. ###PAGE_TSCONFIG_ID### - hodnota nastaviteľná na stránkie v TSconfig dynamicky.

  7. ###PAGE_TSCONFIG_IDLIST### - hodnota nastaviteľná na stránkie v TSconfig dynamicky.

  8. ###PAGE_TSCONFIG_STR### - hodnota nastaviteľná na stránkie v TSconfig dynamicky.

Viac pozri TCA array reference >>

Vlastný select v BE

Zadanie

Potrebujeme v multiselectboxe v Be pri editovaní záznamu vidieť pri jednotlivých položkách okrem ich definovaného labelu (title) aj číslo záznamu (uid).

TCA (tca.php)

include_once(t3lib_extMgm::extPath('extname').'lib/class.tx_rtgcommunity_itemsProcFunc.php');

$TCA["tx_extname_business_units"] = array (
"columns" => array (
...
"uid_groups" => Array (
'displayCond' => 'FIELD:sys_language_uid:=:0',
"exclude" => 1,
"label" => "LLL:EXT:extname/locallang_db.xml:tx_rtgcommunity_extname.uid_groups",
"config" => Array (
"type" => "select",
"foreign_table" => "tx_extname_categories",
"foreign_table_where" => "ORDER BY tx_extname_categories.title ASC",
"size" => 10,
"minitems" => 0,
"maxitems" => 10,
"itemsProcFunc" => "tx_rtgcommunity_itemsProcFunc->user_groups",
"allowNonIdValues" => 1,
)
),
...
),
);

Užívateľsky definovaná funkcia

(class.tx_rtgcommunity_itemsProcFunc.php)
Tučným písmom je označená definícia jednej pložky selectboxu, prvý parameter je názov položky a druhý hodnota voľby (option).

class tx_rtgcommunity_itemsProcFunc {

/**
* Set Groups to multiselect
*
* @param array &$params:
* @param object &$pObj:
* @return void
*/
function user_groups( &$params, &$pObj ) {

$query = '
SELECT uid, title
FROM tx_extname_categories
WHERE deleted=0 AND hidden=0
ORDER BY title, uid
';
$res = $GLOBALS['TYPO3_DB']->sql_query( $query );
if( $res ) {
if( $GLOBALS['TYPO3_DB']->sql_num_rows( $res ) > 0 ) {
$params['items'] = array();
while( $item = $GLOBALS['TYPO3_DB']->sql_fetch_assoc( $res ) ) {
$params['items'][] = Array( $item['title'].' ('.$item['uid'].')', $item['uid'] );
}
}
$GLOBALS['TYPO3_DB']->sql_free_result( $res );
}
}
}

if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/extname/pi1/class.tx_extname_itemsProcFunc.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/extname/pi1/class.tx_extname_itemsProcFunc.php']);
}
 
Žiadne dokumenty ani odkazy k tejto stránke.

Generátor typoscriptu

Vytvára typoscript pre bežné použitie. Generátor je jednoduchý na obsluhu, stačí vyplniť zopár položiek formulára.

Odkazy