abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:33 | Bezpečnostní upozornění

    Byla nalezena vážná bezpečnostní chyba v telnetd z balíčku GNU InetUtils. Týká se verzí GNU InetUtils od 1.9.3 z 12. května 2015 až po aktuální 2.7 z 14. prosince 2025. Útočník může obejít autentizaci a získat root přístup, jelikož telnetd nekontroluje předaný obsah proměnné prostředí USER a pokud obsahuje "-f root"…

    Ladislav Hagara | Komentářů: 2
    včera 17:22 | Komunita

    Stanislav Aleksandrov předložil patch rozšiřující KWin (KDE Plasma) na 3D virtuální desktopové prostředí (videoukázka v mp4).

    Ladislav Hagara | Komentářů: 3
    včera 05:55 | IT novinky

    Digg (Wikipedie), "místo, kde můžete sdílet a objevovat to nejlepší z internetu – a nejen to", je zpět. Ve veřejné betě.

    Ladislav Hagara | Komentářů: 3
    včera 01:44 | Komunita

    Po .deb balíčcích Mozilla nově poskytuje také .rpm balíčky Firefoxu Nightly.

    Ladislav Hagara | Komentářů: 7
    včera 00:33 | IT novinky

    Vývojové prostředí IntelliJ IDEA slaví 25. narozeniny (YouTube).

    Ladislav Hagara | Komentářů: 0
    19.1. 23:55 | IT novinky

    Vedení společnosti NVIDIA údajně povolilo použití milionů knih ze známého 'warez' archivu Anna's Archive k výcviku umělé inteligence, ačkoliv vědělo, že archiv tyto knihy nezískal legální cestou. Žaloba, ve které se objevují i citace interních dokumentů společnosti NVIDIA, tvrdí, že NVIDIA přímo kontaktovala Anna's Archive a požadovala vysokorychlostní přístup k datům knihovny.

    NUKE GAZA! 🎆 | Komentářů: 14
    19.1. 14:33 | Zajímavý software

    Grafický správce balíčků Myrlyn pro SUSE a openSUSE, původně YQPkg, dospěl do stabilní verze 1.0.0. Postaven je nad libzypp a Qt 6. Projekt začal na SUSE Hack Weeku 24.

    Ladislav Hagara | Komentářů: 8
    19.1. 13:44 | Zajímavý projekt

    Vývojáři se podařilo vytvořit patch pro Wine, díky kterému je možné na linuxovém stroji nainstalovat a spustit Adobe Photoshop (testováno s verzemi Photoshopu PS2021 a PS2025). Dalším patchem se podařilo umožnit dokonce instalaci téměř celého Adobe Creative Cloud Collection 2023, vyjma aplikací Adobe XD a Adobe Fresco. Patch řeší kompatibilitu s windowsovými subsystémy MSHTML - jádrem prohlížeče Internet exporer, a MSXML3 - parserem

    … více »
    NUKE GAZA! 🎆 | Komentářů: 6
    19.1. 13:33 | IT novinky

    Hackeři zaútočili na portál veřejných zakázek a vyřadili ho z provozu. Systém, ve kterém musí být ze zákona sdíleny informace o veřejných zakázkách, se ministerstvo pro místní rozvoj (MMR) nyní pokouší co nejdříve zprovoznit. Úřad o tom informoval na svém webu a na sociálních sítích. Portál slouží pro sdílení informací mezi zadavateli a dodavateli veřejných zakázek.

    Ladislav Hagara | Komentářů: 12
    19.1. 12:22 | Nová verze

    Javascriptová knihovna jQuery (Wikipedie) oslavila 20. narozeniny, John Resig ji představil v lednu 2006 na newyorském BarCampu. Při této příležitosti byla vydána nová major verze 4.0.0.

    Ladislav Hagara | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (5%)
     (0%)
     (10%)
     (20%)
     (3%)
     (5%)
     (2%)
     (11%)
     (37%)
    Celkem 546 hlasů
     Komentářů: 16, poslední včera 17:04
    Rozcestník

    Zend framework V

    18.4.2008 22:51 | Přečteno: 3174×

    Zend framework - formuláře

    Podstatná část dat, která uživatel předává serveru je předávána přes formulář, který uživatel vyplní a odešle na server. Tam je ověřeno, zda jsou data validní a případně zpracovány. Zend obsahuje třídu Zend_Form, která krom toho, že umožňuje vytvořit formulář a získat z něj data navíc umožňuje další věci, jako navěšení validátorů pro validaci obsahu, přidání filtrů a nebo obalení jednotlivých elementů formuláře HTML tagy. Toto vše ani nemusíme provádět v php kódu, celý formulář totiž můžeme definovat v konfiguračním souboru. Osobně ale nejvíce oceňuji právě možnost přidání validátorů, případně filtrů, na jednotlivé elementy, přičemž většina běžně používaných validátorů i filtrů je již v Zendu implementovaná.

    Po vytvoření formuláře obvykle jako první nastavíme akci, která se provede při odeslání formuláře a metodu, jakou se budou předávat data:

      $form = new Zend_Form();
      $form->setAction('/zendTest/login/auth')
           ->setMethod('post');
    
    Pomocí metody setAttrib('attribName','attribValue') můžeme formuláři nastavit jakýkoli další atribut. Elementy formuláře vytvoříme zavoláním metody createElement('elementType', 'elementName'). Na elementy formuláře pak můžeme navěsit validátory (a filtry):
      $login = $form->createElement('text', 'username');
      $login->addValidator('alnum')
            ->addValidator('stringLength', false, array(5))
    	->setRequired(true)
    		
      $passwd = $form->createElement('password', 'passwd');
      $passwd->addValidator('StringLength', false, array(5))
    	 ->setRequired(true)
    
    V tomto příkladě jsme vytvořili dva elementy formuláře, pole pro zadání uživatelského jména a pole pro zadání hesla. Obě políčka musí být vyplněná (setRequired(true)) a obsahovat minimálně pět znaků (addValidator('StringLength', false, array(5))). První parametr metody addValidator je jméno validátoru, druhý říká, zda má pokracovat vyhodnocování dalších validátorů, pokud podmínka aktuálního validátoru není splněná a poslední předává další parametry potřebné pro vyhodnocení. První validátor (alphanum) vyžaduje, jak již název napovídá, aby login uživatele obsahoval jen alfanumerické znaky. Filtry by se přidávaly obdobně:
      $login->addFilter('StringtoLower');
    
    Seznam všech již naprogramovaných filtrů a validátorů naleznete v manuálu a pokud vám nebudou vyhovovat, můžete si napsat vlastní.

    Na závěr oba prvky přidáme do formuláře (zatím jsme je jen vytvořili, ale nikoli přidali do formuláře) a přidáme ještě poslední element - tlačítko pro odeslání:

      $form->addElement($login)
           ->addElement($passwd)
           ->addElement('submit', 'login', array('label' => 'Login'));
    
    Formulář pak předáme do view:
      $this->view->form = $form;
      $this->render('showform');
    
    a ve view (showform.phtml) zobrazíme:
    <?= $this->form ?>
    

    Zda jsou data odeslaná přes formulář validní zjistíme zavoláním metody isValid():

    $form->isValid($_POST)
    
    Pokud ano, data z formuláře můžeme získat několika způsoby, např:
      $values = $form->getValues();
    
    (a nebo třeba přímo z requestu: this->_request->getPost('username'))

    Na závěr se ještě letmo zmíním o dekoratérech - prvcích, které elementy formuláře obalují HTML tagy. Opět platí, že si můžeme definovat vlastní. Pokud neučíme jinak, jsou k formuláři připojeny tyto čtyři dekoratéry:

    Dekoratéry můžeme odstranit zavoláním metody removeDecorator('name') na daném elementu:
      $login->removeDecorator('Errors');
    

    Celý kontroler pro přihlášení uživatele (zatím bez autentizace uživatele, jen odelání formuláře) by mohl vypadat takto (příklad je až na drobné úpravy celý převzatý z manuálu Zendu):

    <?php
    class LoginController extends Zend_Controller_Action
    {
    	public function getLoginForm(){
    		$form = new Zend_Form();
    		$form->setAction('/zendTest/login/auth')
    		->setMethod('post');
    		
    		$login = $form->createElement('text', 'username');
    		$login->addValidator('alnum')
    		->addValidator('stringLength', false, array(5))
    		->setRequired(true)
    		->removeDecorator('Errors');
    
    		$passwd = $form->createElement('password', 'passwd');
    		$passwd->addValidator('StringLength', false, array(5))
    		->setRequired(true)
    		->removeDecorator('Errors');
    		
    		$form->addElement($login)
    		->addElement($passwd)
    		->addElement('submit', 'login', array('label' => 'Login'));
    		return $form;
    	}
    
    	public function indexAction(){
    		$this->view->form = $this->getLoginForm();
    		$this->render('showform');
    	}
    
    	public function authAction(){
    		if (!$this->getRequest()->isPost()) {
    			return $this->_forward('index');
    		}
    		$form = $this->getLoginForm();
    		if (!$form->isValid($_POST)) {
    			$this->view->form = $form;
    			return $this->render('showform');
    		}
    		// authentization 
    		// ...
    	}
    }
    

           

    Hodnocení: 75 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Daniel Kvasnička ml. avatar 18.4.2008 23:42 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: Zend framework V
    No vida, pred chvili jsem se prave rozhodl v jedne aplikaci pouzit Zend_Form misto formularoveho/validacniho reseni dodavaneho s Kohanou. Kazdopadne ale jen na tu validacni cast, markup si pisu rucne.
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    19.4.2008 09:50 changeit | Bratislava
    Rozbalit Rozbalit vše Re: Zend framework V
    ja som si napisal skript ktory parsuje html formular, a podla neho vytvori Zend_Form, takze v podstate pisem len markup a metodu na spracovanie hodnot z formu.
    Daniel Kvasnička ml. avatar 19.4.2008 17:54 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
    Rozbalit Rozbalit vše Re: Zend framework V
    A jak do toho markupu zaclenis veskere informace o validatorech a omezenich na jednotlivych polich tak, aby ten vygenerovany Zend_Form byl plnohodnotny? A jak resis znovunaplneni formu (texty, selecty, checkboxy) a vypisy validacnich chyb, kdyz mas ten formular jen v HTML? ...ja pouzivam pro templaty PHPTAL, takze me napada, ze by podobna vec sla docela zajimave resit pres XSLT. Ale uz jsem si integraci vyresil jinak.
    FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
    20.4.2008 17:02 changeit | Bratislava
    Rozbalit Rozbalit vše Re: Zend framework V
    formular je v html ale ten nevykreslujem, vykreslujem len zend_form ktory som podla neho vytvoril. zatial som nejak validatory neriesil ale napr. aby to bola povinna hodnota staci elemntu pridat atribut required="true" a je to. Robene je to ako smarty block plugin.
    19.4.2008 20:00 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Zend framework V
    Ajťáci obvykle decorator do češtiny převádějí jako dekorátor, ovšem jednoduchý "test Googlem" dává dekoratérovi řádově větší váhu. Byl by někdo schopný argumentovat pro a proti dekorátoru a dekoratérovi ve smyslu návrhového vzoru Decorator?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    19.4.2008 20:37 dementni.lojzik | skóre: 19 | blog: ze zivota na vsi
    Rozbalit Rozbalit vše Re: Zend framework V
    Heh, taky jsem psal dekorator, pak jsem to ale projel kontrolou pravopisu a ta mi dekorator opravovala na dekorater. Moc jsem to neresil a nechal dekorater. Ted jsem se na to zkousel podivat a vypada to, ze v cestine existuje pouze slovo dekorater, dekorator patrne bude anglicismus zatazeny sem ajtaky:-) Aspon podle www.pravidla.cz slovo dekoratér neexistuje. Stejne tak slovnik.cz dekorator neprelozi, ale dekorater prelozi mimo jine i jako decorator.
    23.12.2008 11:23 noname sry
    Rozbalit Rozbalit vše Re: Zend framework V

    muzu se optat jakej je  rozdil, ve volani metody? diky

    $this -> getLoginForm();

    a

    self::getLoginForm();

     

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.