Erstmal danke, dass du dir die Zeit nimmst, um mein Problem anzuschauen.
Zur Info: Erstellt habe ich das ganze anhand des Skeleton Bundle: https://github.com/contao/skeleton-bundle
PHP-Code:
// /src/Resources/contao/models/TmTeamsModel.php
namespace VendorName\App\Models;
use Contao\Model;
class TmTeamsModel extends \Model
{
/**
* Table name
* @var string
*/
protected static $strTable = 'tl_tm_teams';
}
PHP-Code:
// /src/Resources/contao/config/config.php
use VendorName\App\Models\TmTeamsModel;
# Models
$GLOBALS['TL_MODELS']['tl_tm_teams'] = TmTeamsModel::class;
#$GLOBALS['TL_MODELS']['tl_tm_teams'] = 'VendorName\App\Models\TmTeams';
#$GLOBALS['TL_MODELS']['tl_tm_teams'] = "VendorName\App\Models\TmTeamsModel";
array_insert($GLOBALS['BE_MOD'],1, array
(
'teamManager' => array
(
'tm_teams' => array
(
'tables' => ['tl_tm_teams']
),
'tm_players' => array
(
'tables' => ['tl_tm_players']
),
'tm_leagues' => array
(
'tables' => ['tl_tm_leagues']
),
'tm_games' => array
(
'tables' => ['tl_tm_games']
)
)
));
Code:
{
"name": "vendorname/app",
"type": "contao-bundle",
"description": "",
"homepage": "",
"license": "LGPL-3.0-or-later",
"authors": [
{
"name": "",
"homepage": ""
}
],
"require": {
"php": "^5.6 || ^7.0",
"contao/core-bundle": "4.4.*",
"symfony/framework-bundle": "^3.3"
},
"conflict": {
"contao/core": "*",
"contao/manager-plugin": "<2.0 || >=3.0"
},
"require-dev": {
"contao/manager-plugin": "^2.0",
"doctrine/doctrine-cache-bundle": "^1.3",
"friendsofphp/php-cs-fixer": "^2.12",
"php-http/guzzle6-adapter": "^1.1",
"php-http/message-factory": "^1.0.2",
"phpunit/phpunit": "^5.7.26",
"symfony/phpunit-bridge": "^3.2"
},
"config": {
"preferred-install": {
"vendorname/*": "source",
"*": "dist"
}
},
"extra": {
"contao-manager-plugin": "VendorName\\App\\ContaoManager\\Plugin"
},
"autoload": {
"psr-4": {
"VendorName\\App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"VendorName\\App\\Tests\\": "tests/"
}
},
"support": {
"issues": "",
"source": ""
}
}
PHP-Code:
// /src/Resources/contao/dca/tl_tm_teams.php
use VendorName\App\Models\TmTeamsModel;
$GLOBALS['TL_DCA']['tl_tm_teams'] = array
(
// Config
'config' => array
(
'dataContainer' => 'Table',
'enableVersioning' => true,
'sql' => array
(
'keys' => array
(
'id' => 'primary'
)
)
),
// List
'list' => array
(
'sorting' => array
(
'mode' => 1,
'fields' => ['teamname'],
'flag' => 1,
'panelLayout' => 'filter;sort,search,limit'
),
'label' => array
(
'fields' => ['teamname'],
// 'format' => '%s',
'showColumns' => true
),
'global_operations' => array
(
),
'operations' => array
(
'edit' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['edit'],
'href' => 'act=edit',
'icon' => 'edit.svg'
),
'copy' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['copy'],
'href' => 'act=copy',
'icon' => 'copy.svg'
),
'delete' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['delete'],
'href' => 'act=delete',
'icon' => 'delete.svg',
'attributes' => 'onclick="if(!confirm(\'' . $GLOBALS['TL_LANG']['MSC']['deleteConfirm'] . '\'))return false;Backend.getScrollOffset()"'
),
'toggle' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['toggle'],
'icon' => 'visible.svg',
'attributes' => 'onclick="Backend.getScrollOffset();return AjaxRequest.toggleVisibility(this,%s)"'
),
'show' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['show'],
'href' => 'act=show',
'icon' => 'show.svg'
)
)
),
// Palettes
'palettes' => array
(
'default' => '{name_legend},teamname,teams'
),
// Fields
'fields' => array
(
'id' => array
(
'sql' => "int(10) unsigned NOT NULL auto_increment"
),
'tstamp' => array
(
'sql' => "int(10) unsigned NOT NULL default '0'"
),
'teamname' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['teamname'],
'search' => true,
'sorting' => true,
'flag' => 1,
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'maxlength'=>255, 'tl_class'=>'long'),
'sql' => "varchar(255) NOT NULL default ''"
),
'members_count' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['members_count'],
'exclude' => true,
'sorting' => false,
'inputType' => 'text',
'eval' => ['maxlength'=>10, 'rgxp'=>'digit'],
'sql' => "int(10) unsigned NOT NULL default '0'"
),
'teams' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_tm_teams']['teams'],
'search' => true,
'inputType' => 'checkbox',
'options_callback' => array('tl_tm_teams', 'getAllTeams'),
'eval' => array('maxlength'=>255, 'multiple'=>true, 'tl_class'=>'w50'),
'sql' => "blob NULL"
)
)
);
/**
* Provide miscellaneous methods that are used by the data configuration array.
*
* @property
*
* @author
*/
class tl_tm_teams extends Backend
{
/**
* Return the IDs of the teams as array
*
* @return array
*/
public function getAllTeams()
{
$objTeams = TmTeamsModel::findAll();
$return = array();
if ($objTeams !== null)
{
while ($objTeams->next())
{
$return[$objTeams->id] = $objTeams->teamname;
}
}
return $return;
}
}
Lesezeichen