Hallo zusammen,
leider scheitere ich momentan an der Erzeugung eines Models für das Contao 4 Bundle.
In Schritt 1 habe ich erst einmal versucht, ohne Namespace ein Model für meine Tabelle "tl_css_toolkit" erzeugen.
src/Model/CssToolkitModel.php
Dieses Model möchte ich gerne innerhalb einer Klasse in der DCA-Erweiterung für "tl_layout" einsetzen.PHP-Code:
<?php
class CssToolkitModel extends \Model
{
protected static $strTable = 'tl_css_toolkit';
}
src/Resources/contao/dca/tl_layout.php
Daraufhin habe ich folgende Fehlermeldung erhalten.PHP-Code:
<?php
$GLOBALS['TL_DCA']['tl_layout']['palettes']['default'] = preg_replace(
'/([;,]external)([;,])/',
'$1,cssToolkit$2',
$GLOBALS['TL_DCA']['tl_layout']['palettes']['default']
);
$GLOBALS['TL_DCA']['tl_layout']['fields']['cssToolkit'] = Array(
'label' => &$GLOBALS['TL_LANG']['tl_layout']['cssToolkit'],
'exclude' => true,
'inputType' => 'select',
'options_callback' => array('tl_layout_cssToolkit', 'layoutOptions'),
'eval' => array('tl_class'=>'w50'),
'sql' => "int(10) unsigned NOT NULL default 0"
);
class tl_layout_cssToolkit
{
public function layoutOptions($dc) {
$output = Array("0" => "-");
$objCssToolkits = CssToolkitModel::findByPid($dc->id);
while($objCssToolkits->next()){
$output[$objCssToolkits->name] = $objCssToolkits->id;
}
return $output;
}
}
Da ich die Klasse "CssToolkitModel" ohne Namepace (also nach meinem Verständnis global) definiert habe, verstehe ich nicht so recht, wo das Problem liegt. Da ich aber ein Use-Statement verwenden soll, gehe ich davon aus, dass Contao hier einen Namespace haben möchte.Zitat:
Attempted to load class "CssToolkitModel" from the global namespace. Did you forget a "use" statement?
Daraufhin habe ich die "src/Model/CssToolkitModel.php" am Anfang des Codes um einen Namespace erweitert.
Am Anfang der "tl_layout.php" verwende ich "use".PHP-Code:
namespace BohnMedia\CssToolkitBundle\Model;
Nun werde ich in der Fehlermeldung gefragt, ob ich ein "use" statement für "BohnMedia\CssToolkitBundle\Model\CssToolkitMo del" vergessen habe.PHP-Code:
use BohnMedia\CssToolkitBundle\Model\CssToolkitModel;
Selbst wenn ich den Namespace direkt im Funktionsaufruf angebe, bleibt die Fehlermeldung bestehen.Zitat:
Attempted to load class "CssToolkitModel" from the global namespace. Did you forget a "use" statement for "BohnMedia\CssToolkitBundle\Model\CssToolkitModel" ?
Falls jemand weiß, wie es mit Namespaces geht, wäre das großartig, da ich die Zusammenhänge anhand der Tutorials und verschiedener Gits anscheinend noch nicht ganz verstanden habe. Im Zweifel könnte ich aber auch darauf verzichten.PHP-Code:
$objCssToolkits = \BohnMedia\CssToolkitBundle\Model\CssToolkitModel::findByPid($dc->id);
Dank und Gruß
Dennis