Archiv pro štítek: Nette

Nette a ukládání průhledných PNG obrázků

Standardní distribuce PNG mi špatně ukládá průhledné PNG (místo průhledné barvy je černá). Na různých serverech to možná funguje jinak. Osvědčila se mi následující úprava. Ve funkci fromFile třídy Image je ve switchi třeba nahradit větev patřící k typu PNG za tento kód:

if (@imagecreatefrompng($file)==false) return false;
$image = imagecreatefrompng($file);
imageantialias($image,true);
imagealphablending($image, false);
imagesavealpha($image,true);
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
return new self($image);

Nette autorizace bez Nette aplikace

Před jakýkoli výstup se musí dát například $user->isLoggedIn();, aby nenastala chyba „Cannot send session cache limiter – headers already sent“. Zatím nevím o jiném způsobu, jak tomuto zabránit. Jinak se totiž ve funkci getNamespace zahajuje session, které výstupem už je nastartované (nebo jinou funkcí). Toto mi nepřijde jako úplně správné řešení, ale funguje to. :)

Vykreslování formulářů pomocí Nette

Pro lepší představu, jak je možné upravovat formuláře generované frameworkem Nette jsem si při programování jednoho konkrétního dumpoval obsah formuláře. Níže přikládám výsledek dumpu.

object(ConventionalRenderer) (4) {

„wrappers“ => array(8) {

„form“ => array(2) {

„container“ => NULL

„errors“ => bool(TRUE)

}

„error“ => array(2) {

„container“ => string(14) „ul“

„item“ => string(2) „li“

}

„group“ => array(3) {

„container“ => string(8) „fieldset“

„label“ => string(6) „legend“

„description“ => string(1) „p“

}

„controls“ => array(1) {

„container“ => string(5) „table“

}

„pair“ => array(4) {

„container“ => string(2) „tr“

„.required“ => string(8) „required“

„.optional“ => NULL

„.odd“ => NULL

}

„control“ => array(12) {

„container“ => string(2) „td“

„.odd“ => NULL

„errors“ => bool(FALSE)

„description“ => string(5) „small“

„requiredsuffix“ => string(0) „“

„.required“ => string(8) „required“

„.text“ => string(4) „text“

„.password“ => string(4) „text“

„.file“ => string(4) „text“

„.submit“ => string(6) „button“

„.image“ => string(11) „imagebutton“

„.button“ => string(6) „button“

}

„label“ => array(3) {

„container“ => string(2) „th“

„suffix“ => NULL

„requiredsuffix“ => string(0) „“

}

„hidden“ => array(1) {

„container“ => string(3) „div“

}

}

„form“ protected => NULL

„clientScript“ protected => bool(TRUE)

„counter“ protected => NULL

}
A například takové může být použití:

$renderer = $form->getRenderer();
$renderer->wrappers['controls']['container'] = NULL;
$renderer->wrappers['pair']['container'] = 'p';
$renderer->wrappers['control']['container'] = NULL;
$renderer->wrappers['label']['container'] = NULL;
$renderer->wrappers['control']['.text'] = 'text-long';