AppFile FormControl ako rozsirenie FileUpload
- edke
- Člen | 198
Zdar vsetci.
Dokoncujem prave prvu funkcnu verziu rozsirenia AppFile pre Forms.
Zakladny popis:
- rozsiruje FileUpload
- udrzi informaciu o subore (uz nahratom) pri napr. editovani zaznamu
- cez povodny file input ponuka moznost nahradit ho novym
- pomocou checkboxu a jeho uncheckom umozni odoslat po submite stav, ze subor chceme zmazat
- caption pre checkbox je link, teda moznost dalsej funkcionality, priamo download ulozeneho suboru, alebo nahlad na obrazok (lightbox)
Obrazok je viac, ako tisic slov, tu je sshot.
S cim by som potreboval poradit:
- je zaujem o tento Control a jeho zverejnenie na github-e, pripadne v Extras ?
- Namespaces pouzivam rovnake, ako v Nette, teda control je v Nette\Forms a UploadedFile je v Nette\Web, je toto vhodne alebo je lepsie pouzit ine namespaces ?
- nazov controlu AppFile je najlepsie co som vymyslel, ale mohlo by to byt lepsie, nenapada vas nic ?
- voda
- Člen | 561
Mám něco podobného, akorát místo odkazu na soubor tam mám selectbox
s výběrem nahraných souborů. Na checkboxu je pak ‚toggle‘, který
skrývá a zobrazuje selectbox a fileinput. Metoda getValue()
vrací buď hodnotu ze selectboxu nebo instanci HttpUploadedFile.
1. je zaujem o tento Control a jeho zverejnenie na github-e, pripadne v Extras ?
Kdyby tvůj addon uměl i výběr ze selectboxu, tak bych ho určitě využil.
2. Namespaces pouzivam rovnake, ako v Nette, teda control je v Nette\Forms a UploadedFile je v Nette\Web, je toto vhodne alebo je lepsie pouzit ine namespaces ?
Namespace Nette určitě ne. Použit nějaký vlastní.
3. nazov controlu AppFile je najlepsie co som vymyslel, ale mohlo by to byt lepsie, nenapada vas nic ?
Já ten svůj nazval FileEdit.
- edke
- Člen | 198
voda wrote:
Mám něco podobného, akorát místo odkazu na soubor tam mám selectbox s výběrem nahraných souborů. Na checkboxu je pak ‚toggle‘, který skrývá a zobrazuje selectbox a fileinput. Metoda
getValue()
vrací buď hodnotu ze selectboxu nebo instanci HttpUploadedFile.
Aha. No ja teraz riesim situaciu, ze dana hodnota moze byt len jeden subor, nie viacero.
Ako hodnota je:
- objekt HTTPUploadedFile, ak nahras novy subor
- objekt UploadedFile ako extend HTTPUploadedFile, ak je hodnota uz nahraty subor a name je jeho nazov aj s jeho webovou Uri (napriklad /media/images/image.png), size je realna velkost, type je realny mime type a tmpname je full path (napriklad /var/www/example/document_root/media/images/image.png)
Ak zobrazujem formular a subor je uz uploadnuty, naplnam ho tym, co mam v db, teda „/media/images/image.png“, vytvori sa z toho objekt UploadedFile.
Momentalne to mam napojene na doctrine entity, a pomocou baseEntity sa automaticky deju vsetky potrebne operacie (new → move(), remove → unlink(), replace → unlink() and move()). Dalsia konfiguracia cez doctrine2 entities annotations, napriklad:
/**
* @file(path="/media/people/photo")
* @column(type="string", length=150, nullable=true)
*/
private $photo;
- edke
- Člen | 198
Ukazka definicie controlu a validacie:
$form->addAppFile('photo', 'Photo')
->setOption('description', 'image (JPG or PNG) with dimmensions 250x237px')
->addRule(Form::FILLED, 'Fotka je povinná')
->addRule(Form::MIME_TYPE, 'Podporovaný je len obrázok typu PNG alebo JPG', array('image/jpeg', 'image/png'))
->addRule(AppFile::IMAGE_WIDTH, "Fotka musí mať šírku %spx.", 250)
->addRule(AppFile::IMAGE_HEIGHT, "Fotka musí mať šírku %spx.", 237);
$form->addAppFile('curriculumVitae', 'CV file')
->setOption('description', 'PDF file with max. length 50kB')
->addRule(Form::FILLED, 'CV je povinné')
->addRule(Form::MIME_TYPE, 'Podporovaný je len PDF súbor', 'application/pdf')
->addRule(Form::MAX_FILE_SIZE, 'Maximálna povolená veľkosť je 50kB', 50*1024);
--/
- voda
- Člen | 561
edke napsal(a):
voda wrote:
Mám něco podobného, akorát místo odkazu na soubor tam mám selectbox s výběrem nahraných souborů. Na checkboxu je pak ‚toggle‘, který skrývá a zobrazuje selectbox a fileinput. Metoda
getValue()
vrací buď hodnotu ze selectboxu nebo instanci HttpUploadedFile.Aha. No ja teraz riesim situaciu, ze dana hodnota moze byt len jeden subor, nie viacero.
Já to mám taky jako jednu hodnotu, ale můžu zvolit jakýkoliv dříve nahraný soubor.
- bojovyletoun
- Člen | 667
Že nahraješ soubor, třeba neprojde validací (custom validace na servevru) nebo se ti nebude líbit, tak nahraješ nový. Je to tak? A jde nějak ten uploadnutý soubor třeba zobrazit vedle (třeba situace nahrání fotky na profil)?
Nenapadlo mě využití možnosti vybrat dříve nahraný soubor (resp ano, ale není to tak časté).
- edke
- Člen | 198
bojovyletoun wrote:
Že nahraješ soubor, třeba neprojde validací (custom validace na servevru) nebo se ti nebude líbit, tak nahraješ nový. Je to tak? A jde nějak ten uploadnutý soubor třeba zobrazit vedle (třeba situace nahrání fotky na profil)?
Nenapadlo mě využití možnosti vybrat dříve nahraný soubor (resp ano, ale není to tak časté).
to bolo zrejme pre vodu, tak ? :)
- voda
- Člen | 561
bojovyletoun napsal(a):
Že nahraješ soubor, třeba neprojde validací (custom validace na servevru) nebo se ti nebude líbit, tak nahraješ nový. Je to tak?
Hodí se pokud ho chci změnit, třeba nahrát novější verzi souboru.
A jde nějak ten uploadnutý soubor třeba zobrazit vedle (třeba situace nahrání fotky na profil)?
To jsem zatím neřešil, ale bylo by to hezký.
Nenapadlo mě využití možnosti vybrat dříve nahraný soubor (resp ano, ale není to tak časté).
Nelibí se mi, kdybych chtěl mít na dvou místech stejný soubor, tak abych ho musel nahrávat dvakrát.