Witam.
Może zacznę od wklejenia kodu.
<?php
public function indexAction() {
$request = new Zend_Controller_Request_Http();
Zend_Loader::loadClass('Form_UploadForm');
$uploadForm = new Form_UploadForm();
if ($request->isPost())
{
$this->_helper->layout->disableLayout();
if (!$uploadForm->isValid($request->getPost()))
{ // Próba walidacji formularza
$messages = implode('<br />', $uploadForm->uploadFile->getMessages());
$information = 'Błąd podczas sprawdzania poprawności formularza. <br />'
. '<em>'.$messages.'</em>';
print_r($uploadForm->getMessages()); }
elseif (!$uploadForm->uploadFile->isUploaded())
{ // Czy cokolwiek zostało wysłane?
$information = 'Nie wybrano pliku do wysłania.';
}
elseif (!$uploadForm->uploadFile->receive())
{ // Odbiór pliku
$information = 'Błąd podczas odbierania pliku.';
}
else
{ // Sukces
$information = 'Plik ' . $uploadForm->uploadFile->getFileName()
. ' został poprawnie wysłany.';
}
}
else
{
$information = 'Wyślij plik używając poniższego formularza:';
}
if ($request->getParam('asyncUpload'))
{
/* Żądanie asynchroniczne */
<script type="text/javascript">
window.parent.finishUpload("$information");
</script>
STOP;
}
else
{
/* Wyrenderowanie widoku */
$this->view->uploadForm = $uploadForm;
$this->view->information = $information;
}
}
?>
A teraz skrypt js:
<?php
$(document).ready(function() {
// Ukryta ramka do wysyłania plików
var iFrame = $('<iframe name="uploadFrame" id="uploadFrame" src=""></iframe>').hide();
// Dopisanie ramki do dokumentu
$('body').append(iFrame);
// Dostosowanie formularza aby wysyłał dane do ramki
$('#uploadForm').attr('target', 'uploadFrame');
// Poinformowanie serwera o tym że plik jest wysyłany asynchronicznie
$('#uploadForm').attr('action', '/index/index/asyncUpload/1');
// Zablokowanie formularza na czas wysyłania pliku.
// W tym miejscu można poinformować użytkownika o tym że
// coś się dzieje w tle.
$('#uploadForm').submit(function() {
$('#uploadForm #submit').attr('disabled', 'disabled');
$('#information').html('Wysyłanie pliku - proszę czekać');
return true;
});
// Ta funkcja zostanie wywołana przez ramkę gdy wysyłanie zostanie
// zakończone.
window.finishUpload = function(information) {
$('#information').html(information);
$('#uploadForm #submit').attr('disabled', '');
}
});
?>
I teraz pytanie brzmi:
Jeśli zmienię miejsce formularza na adminAction i w skrypcie dam odpowiedni url:$('#uploadForm').attr('action', '/index/admin/asyncUpload/1');
to wówczas plik owszem jest przesyłany, ale cały czas mam komunikat, że plik jest wysyłany i nie uruchamia się ostatnia funkcja skryptu js.
Dlaczego?
Z góry dziękuję za odpowiedź.
EDIT:
Problem rozwiązany. Aż wstyd

Mianowicie zapomniałem w katalogu application/views/scripts/index/ dodac pliku admin.phtml
Temat do zamknięcia.
Ten post edytował tr!ckle 21.07.2009, 19:01:47