Eingabefelder anlegen

Fragen zum Entwickeln eigener Addons?

Moderator: General Support Moderators

Forum rules
Forumregeln
Locked
mapl
Joomla! Fledgling
Joomla! Fledgling
Posts: 3
Joined: Thu Dec 25, 2008 9:42 pm

Eingabefelder anlegen

Post by mapl » Mon Apr 09, 2012 9:40 pm

Hallo,

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"
		/>
edit.php

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);
	}
Die Oberfläche sieht folgendermassen aus:
com_test.jpg
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.
You do not have the required permissions to view the files attached to this post.

cryptonit
Joomla! Apprentice
Joomla! Apprentice
Posts: 21
Joined: Sat Jan 07, 2012 2:35 pm

Re: Eingabefelder anlegen

Post by cryptonit » Fri Jun 22, 2012 12:55 pm

Ich verstehe deine Frage leider nicht.
Du hast deine data.xml, wo du als Feldname für dein selbsterstelltes Input Field den Namen test verwendet hast.
Wenn du nach dem Abschicken der Form auf edit.php die Form auswertest, bekommst du den Feldnamen name und den Wert, welcher dir dein Input Field zurückliefert.

Was soll nun deiner Meinung nach anders laufen?

mapl
Joomla! Fledgling
Joomla! Fledgling
Posts: 3
Joined: Thu Dec 25, 2008 9:42 pm

Re: Eingabefelder anlegen

Post by mapl » Fri Jun 22, 2012 8:11 pm

Die Felder in der Datenbank werden dynamisch angelegt. Der Feldname muss nicht immer den gleichen Namen haben. Die Feldnamen werden als "field" und einer fortlaufenden Nummer angelegt. Wie kann ich die dynamischen Feldnamen in der data.xml angeben?

cryptonit
Joomla! Apprentice
Joomla! Apprentice
Posts: 21
Joined: Sat Jan 07, 2012 2:35 pm

Re: Eingabefelder anlegen

Post by cryptonit » Sat Jun 23, 2012 6:05 am

Hmm, eigentlich schreit alles in mir, dass du was auch immer du genau machen möchtest, dies auch anders lösen könntest. Sprich: Du wohl noch nicht das optimale Software- Design für dein Problem gefunden hast.

Aber gehen wir mal davon aus, dass das die einzig mögliche Lösung ist.

Du kannst deine data.xml nicht beeinflussen, das musst du aber auch nicht, um dem Feld in der Form einen anderen Namen zu geben.
Schau dir folgende Zeile in deiner selectmedia.php an:

Code: Select all

$html[] = parent::getInput();
Diese Zeile bewirkt, dass ein Textfeld mit dem Namen und der ID, welche du im data.xml definiert hast, erstellt wird. Wenn du diese Zeile ersetzt mit einem eigenen Input- Feld inkl. dem Namen, welchen du zuvor mit einer SQL- Abfrage ermittelst, kommt das heraus, was du dir wünschst.

ABER nochmals: Ich glaube du bist einem konzeptionellen Fehler erlegen. Denn solche Basteleien sollten nicht notwendig sein...


Locked

Return to “Entwicklerforum”