ich bin auch der Suche nach einer Lösung, Eingabefelder im Backend mit dynamischen Zugriff auf die Datenbank anzulegen.
Zur Zeit sieht mein Code so aus:
data.xml
Code: Select all
<form>
<fieldset>
<field name="id" type="text" default="0" label="COM_TEST_MEDIA_ID"
readonly="true" class="readonly" />
<field
name="test"
type="selectmedia"
default=""
description="COM_TEST_MEDIA_DESC"
label="COM_TEST_MEDIA_LABEL"
maxlength="50"
/>
Code: Select all
<li><?php echo $this->form->getLabel('test'); ?>
<?php echo $this->form->getInput('test'); ?></li>
selectmedia.php
Code: Select all
protected function getInput()
{
// Get the client id.
$clientId = $this->element['client_id'];
if (!isset($clientId))
{
$clientName = $this->element['client'];
if (isset($clientName))
{
$client = JApplicationHelper::getClientInfo($clientName, true);
$clientId = $client->id;
}
}
if (!isset($clientId) && $this->form instanceof JForm)
{
$clientId = $this->form->getValue('client_id');
}
$clientId = (int) $clientId;
// Load the modal behavior script.
JHtml::_('behavior.modal', 'a.modal');
// Build the script.
$script = array();
$script[] = ' function jSelectMedia_'.$this->id.'(name) {';
$script[] = ' document.id("'.$this->id.'").value = name;';
$script[] = ' SqueezeBox.close();';
$script[] = ' }';
// Add the script to the document head.
JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
// Setup variables for display.
$html = array();
// $link = 'index.php?option=com_test&view=medias&layout=modal&type='.$this->form->type.'&bid='.$this->form->id.'&tmpl=component&function=jSelectMedia_'.$this->id;
$link = 'index.php?option=com_test&view=medias&layout=modal&type=image&bid='.$this->form->getValue('id').'&tmpl=component&function=jSelectMedia_'.$this->id;
// The current user display field.
$html[] = '<div class="fltlft">';
$html[] = parent::getInput();
$html[] = '</div>';
// The user select button.
$html[] = '<div class="button2-left">';
$html[] = ' <div class="blank">';
$html[] = ' <a class="modal" title="'.JText::_('COM_TEST_SELECTMEDIA_TITLE').'" href="'.$link.'" rel="{handler: \'iframe\', size: {x: 800, y: 450}}">'.JText::_('COM_TEST_BUTTON').'</a>';
$html[] = ' </div>';
$html[] = '</div>';
return implode("\n", $html);
}
Wenn in der Datenbank das Feld 'test' existiert, wird der Eintrag auch gespeichert.
Es ist allerdings so, dass in der Datenbank die Felder 'field1', 'field2' oder 'field15' heissen können.
Den Feldnamen kann ich abragen. Wie kann ich jetzt der data.xml die Veriable 'field15' übergeben bzw. wie kann ich das Eingabefeld und den Button anders anlegen?
Ich hoffe ihr könnt mir weiterhelfen.