Добрый день, четвертый день копаю Joomla 1.7. Задача следующая, с помощью swfupload закачивается экселевский файл, разбирается, заносится в базу данных и выводится на экран. Посмотрите логику компонента, так ли все? controller.php в корне компонента Код (CODE): <?php // Защита от прямого обращения к файлу defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.controller'); jimport( 'joomla.environment.request' ); class BtController extends JController { function display() { parent::display(); } function upload() { if (isset($_POST["PHPSESSID"])) { session_id($_POST["PHPSESSID"]); } session_start(); ini_set("html_errors", "0"); $model = $this->getModel('upload'); $uploaddir = JRequest::getVar('base_upload_dir'); $model -> setState('base_upload_dir', $uploaddir); $model->work(); $this->setRedirect('index.php?option=com_users&view=login', false); //Ничего не происходит $this->redirect(); //Ничего не происходит } } Далее, собранный по swfupload примерам и компонентам, файл views/bt/view.html.php Код (CODE): <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.view'); //get the hosts name jimport('joomla.environment.uri' ); $host = JURI::root(); //add the links to the external files into the head of the webpage (note the 'administrator' in the path, which is not nescessary if you are in the frontend) $document =& JFactory::getDocument(); $document->addScript($host.'components/com_bt/swfupload/swfupload.js'); $document->addScript($host.'components/com_bt/swfupload/swfupload.queue.js'); $document->addScript($host.'components/com_bt/swfupload/fileprogress.js'); $document->addScript($host.'components/com_bt/swfupload/handlers.js'); $document->addStyleSheet($host.'components/com_bt/swfupload/default.css'); //when we send the files for upload, we have to tell Joomla our session, or we will get logged out $session = & JFactory::getSession(); $swfUploadHeadJs =' var swfu; window.onload = function() { var settings = { flash_url : "'.$host.'components/com_bt/swfupload/swfupload.swf", upload_url: "index.php", post_params: { "PHPSESSID" : "'.$session->getId().'", "base_upload_dir" : "'.JPATH_SITE.DS.'images'.DS.'stories'.DS.'", "option" : "com_bt", "task" : "upload", "id" : "'.$session->getName().'", "format" : "raw" }, file_size_limit : "5 MB", //client side file chacking is for usability only, you need to check server side for security file_types : "*.xls;*.jpeg;*.gif;*.png", file_types_description : "All Files", file_upload_limit : 1, file_queue_limit : 1, custom_settings : { progressTarget : "fsUploadProgress", cancelButtonId : "btnCancel" }, debug: false, // Button settings button_image_url: "'.$host.'components/com_bt/swfupload/TestImageNoText_65x29.png", button_width: "85", button_height: "29", button_placeholder_id: "spanButtonPlaceHolder", button_text: \'<span class="theFont">Choose Files</span>\', button_text_style: ".theFont { font-size: 13; }", button_text_left_padding: 5, button_text_top_padding: 5, // The event handler functions are defined in handlers.js file_queued_handler : fileQueued, file_queue_error_handler : fileQueueError, file_dialog_complete_handler : fileDialogComplete, upload_start_handler : uploadStart, upload_progress_handler : uploadProgress, upload_error_handler : uploadError, upload_success_handler : uploadSuccess, upload_complete_handler : uploadComplete, queue_complete_handler : queueComplete // Queue plugin event }; swfu = new SWFUpload(settings); }; '; //add the javascript to the head of the html document $document->addScriptDeclaration($swfUploadHeadJs); class BtViewBt extends JView { function display ($tpl = null) { parent:: display ($tpl); } } и файл модели models/upload.php. Сейчас здесь только копирование файла в соответствующую директорию, разворот экселя убрал. Код (CODE): <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport('joomla.application.component.model'); jimport('joomla.filesystem.file'); jimport('joomla.filesystem.folder'); class BtModelUpload extends JModel { function work() { $base_upload_dir = $this->getState('base_upload_dir'); $user =& JFactory::getUser(); $upload_dir = $base_upload_dir.'/buytogether/'.$user; $fileName = $_FILES['Filedata']['name']; if ( !is_dir($upload_dir) ) { mkdir($upload_dir, 0775);} if (isset($_FILES)) { if (is_uploaded_file($_FILES['Filedata']['tmp_name'])) { $fullDirAndFileName = $upload_dir.'/'.$fileName; if(!JFile::upload($_FILES['Filedata']['tmp_name'], $fullDirAndFileName)) { echo JText::_( 'ERROR MOVING FILE' ); return; } else { // success, exit with code 0 for Mac users, otherwise they receive an IO Error exit(0); } } } } } Так вот, логика моя слудующая: 1.Запускается компонент index.php?option=com_bt, запускается задача display, загружается вид с формой отправки 2. Форма отправляется на index.php?option=com_bt&task=upload 3. В контроллере com_bt/controller.php вызывается задача upload() 4. После выполнения upload(), автоматически переходим на вид для выдачи результатов Вопрос, как реализовать переход на другой вид? Бился с setRedirect и redirect, ничего не происходит... Может не надо на основной контроллер это отсылать, а надо на отдельный файл-обработчик, как в некоторых примерах? Спасибо