Povoliť v názve komponent niektoré nealfanumerické znaky (napr. bodku, minusko)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
leumas
Člen | 13
+
0
-

Momentálne môže komponenta v názve obsahovať iba alfanumerické znaky a podčiarovník. Občas narážam na problém, kedy by som chcel v názve komponenty (hlavne pri formulároch) vyjadriť hierarchickú štruktúru, príklad:

adresa.ulica
adresa.mesto
adresa.psc

Viem, že na toto existujú vo formulároch kontajnery, tie však poskytujú menej voľnosti, nakoľko mi neumožňujú mať prvky z jedného kontajnera v rôznych grupách (fieldset).

Viem, že je povolený podčiarovník, avšak ten sa často vyskytne pri viacslovných názvoch komponent (datum_narodenia).

Uvítal by som preto možnosť používať v názvoch komponent aj znak bodky, prípadne mínuska.

Vďaka za prípadnu reakciu

Filip Procházka
Moderator | 4668
+
0
-

Ohledně tvých Containerů. Máš pravdu, že to nejde zapsat jednoduše, ale správně bys měl stejně použít na hierarchii komponenty. Ve formulářích to dává velký smysl.

use Nette\Forms\ControlGroup;

class AddressContainer extends Nette\Forms\Container
{
	public function __construct(ControlGroup $group1, ControlGroup $group2)
	{
		parent::__construct();

		$group1->add($this->addText('city', 'Město'));
		$group2->add($this->addText('street', 'Ulice'));
		$group1->add($this->addText('number', 'Č.P.'));
		$group2->add($this->addText('zip', 'PSČ'));
	}
}

$form = new Nette\Application\UI\Form;
$form['address'] = new AddressContainer(
		$form->addGroup('Jedna'),
		$form->addGroup('Dva')
	);

Stačí si jen najít způsob zápisu, který ti bude vyhovovat :)

Co se týče žádosti. Taky jsem teď narazil na to, že by se hodilo, mít ve jménu komponenty tečku. Příklad:

$grinder->addColumn('address.street', 'Ulice');

V datagridu by se tak dal strašně krásně vyřešit přístup k relacím, bez nutnosti to někam ohýbat a hackovat fungování komponent.

kravčo
Člen | 721
+
0
-

Napríklad spojovník (-) sa používa ako oddeľovač v úplnom názve komponenty, napr.: frmform-container-input.

Filip Procházka
Moderator | 4668
+
0
-

Proto jsem navrhoval (/souhlasil s) tečku :)

Jenom nevím, jak moc by to bylo validní, kdyby bylo dovoleno to používat při vypisování html atributů u formulářů. Asi zůstanu u hackování komponent. Ale hodil by se nějaký řídící znak :)

leumas
Člen | 13
+
0
-

HosipLan napsal(a):
Jenom nevím, jak moc by to bylo validní, kdyby bylo dovoleno to používat při vypisování html atributů u formulářů. Asi zůstanu u hackování komponent. Ale hodil by se nějaký řídící znak :)

w3c vraví:

ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters,
digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

Mimochodom, bežný php trik s používaním hranatých zátvoriek [] v názve elementov, toto odporúčanie w3c porušuje.

Filip Procházka
Moderator | 4668
+
0
-

Mně šlo hlavně o to, jestli to nerozbije css selektory, jestli to bude validní, už mě nepálí.