Problem s uploadem souboru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MW
- Člen | 626
Zdravím,
Mam problem s uploadem souboru. Mam formular v modalnim okne pres jquery
dialog().
Vse funguje s beznymi daty z addText, ale ne z addUpload. Co delam spatne
prosim ? :
protected function createComponentUploadForm($name) {
$form = new Nette\Application\UI\Form($this, $name);
$form->addUpload('file', 'Soubor:');
$form->addText('test', 'Test');
$form->addSubmit('register', 'Nahrát')
->onClick[] = callback($this, 'uploadFormSubmitted');
return $form;
}
public function uploadFormSubmitted(SubmitButton $btn) {
$data = $btn->form->values;
$this->flashMessage('Zpracovávám');
if ($this->presenter->isAjax()) {
$this->invalidateControl('uploadForm');
$this->invalidateControl('flashMsg');
} else {
$this->redirect('this');
}
}
Toto je pak v $btn->form->values :
Nette\ArrayHash object {
CLASSNAME => (string) Nette\ArrayHash
file => Nette\Http\FileUpload object {
CLASSNAME => (string) Nette\Http\FileUpload
name => null
type => null
size => null
tmpName => null
error => (int) 4
}
test => (string) gggggg
}
- iguana007
- Člen | 970
viz. error 4: http://php.net/…d.errors.php
Soubor se ti na server nenahrál … teď musíš zjistit proč?
Máš povolený zápis tam, kde se ti soubory nahrávají?
- MW
- Člen | 626
pokud do toho nemotam ajax a modalni okno, tak me php upload vali
v poradku.
Jediny rozdil je pak jeste v tom, ze volam onSuccess misto onClick …
Nevadi tomu, ze je ten form injektovany do toho dialogu? :
Na modalni okno jsem pouzil tento kod z fora :
<script>
// aktivace odkazu na zobrazeni dialogu
jQuery(function($) {
$('a.ajaxdialog').live('click', function(event) {
event.preventDefault();
$.post($.nette.href = this.href, function(data) {
// (mimo jine) injektovani formulare do HTML
$.nette.success(data);
// aktivace ajaxoveho submitu formulare
activateAjaxForm();
// zobrazeni formulare v dialogu
$("#snippet--uploadForm").dialog( { modal: true, draggable: false } );
}, "json");
});
});
// aktivace "ajaxoveho" formulare
function activateAjaxForm () {
$("#snippet--uploadForm form :submit").click(function () {
$(this).ajaxSubmit();
$("#snippet--uploadForm").dialog( "destroy" ); // po submitnuti zavreme dialog
return false;
});
}
</script>