addUpload() – kontrola přípony souboru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- raketoplan2005
- Člen | 147
Ahoj,
potřeboval bych při uploadu souboru zkontrolovat také příponu, ve foru jsem to našel několikrát ve starých vláknech, ale vždy bez výstupu, nebo s řešením, které mi nefunguje viz:
$form->addUpload('csv_file', 'CSV soubor:')
->addRule(Form::MIME_TYPE, 'Zdrojový soubor musí být ve formátu CSV.',
'text/csv,application/csv,text/x-csv,text/plain')
->addRule(Form::PATTERN, 'Soubor musí být typu CSV', '\\.csv$')
->addRule(Form::FILLED, 'Zdrojový soubor musí být vybrán.');
končím na
Call to undefined static method Nette\Forms\Controls\UploadControl::validatepattern()
Poradili byste mi prosím jak z toho ven? Děkuji
Editoval raketoplan2005 (30. 7. 2013 23:07)
- flr
- Člen | 6
Form::PATTERN
lze použít jen u prvků který dědí od
Nette\Forms\Controls\TextBase
, což
Nette\Forms\Controls\UploadControl
není. Můžes si ale napsat
vlastní validátor, stačí metodě addRule
předat callback –
funkci která rozhodne jestli to projde nebo ne.
Takhle to bude fungovat:
$form->addUpload('csv_file', 'CSV')
->addRule(Form::FILLED, 'Zdrojový soubor musí být vybrán.')
->addRule(Form::MIME_TYPE, 'Zdrojový soubor musí být ve formátu CSV.', 'text/csv,application/csv,text/x-csv,text/plain')
->addRule(function ($item) {
return Nette\Utils\Strings::endsWith(strtolower($item->value->name), '.csv');
}, 'Soubor musí být typu CSV');