Помогите решить проблему

Тема в разделе "OpenCart", создана пользователем gavag, 25 фев 2013.

  1. gavag

    gavag

    Регистрация:
    5 янв 2013
    Сообщения:
    109
    Симпатии:
    10
    Всем здравствовать.
    Вроде бы ничего особенного однако не пойму что и как: делаю один модуль и нужно загрузить с прайса данные в базу. Так вот: как передать файл (название этого самого файла) в скрипт загрузки который находиться в контроллере? Что только не перепробовал пишет переменная не определена.
    Так сам код
    Часть .tpl
    Код:
    <tr>
    			<td width="25%"><?php echo $entry_restore; ?></td>
    			<td><input type="file" name="csv_import" /></td>
    		  </tr>
    
    Импорт данных

    Часть .php
    Код:
    	public function upload() {
    		if ($this->validat_e()) {
    			$this->load->model('tool/export');
     
    			$filename = $this->request->files['csv_import']['tmp_name'];
    			$this->model_tool_export->upload($filename);
    		   
    			   
    			$this->redirect($this->url->link('module/evaluation', 'token=' . $this->session->data['token'], 'SSL'));
     
    		} else {
     
    			// return a permission error page
    			return $this->forward('error/permission');
    		}
    	}
    
    И вот здесь самое интересное: что бы не делал переменная csv_impor - не определена, прописываю прямо
    $this->model_tool_export->upload('C:\Documents and Settings\Admin\Рабочий стол\evaluation_list_game.xls');
    все загружает отлично.

    Бьюсь уже несколько дней, все никак. Помогите моему горю.
     
  2. gavag

    gavag

    Регистрация:
    5 янв 2013
    Сообщения:
    109
    Симпатии:
    10
    Решил пойти обычным путем (через обработку формы):
    В шаблоне сделал так:
    Код:
    <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="for_m">
    		<table class="form" >
    		<tr>
    		<td><?php echo $text_evaluation;; ?>
    				<select name="layout_id">
    				<?php foreach ($layouts_ as $layout_) { ?>
    				<?php if ($layout_['id'] == 1) { ?>
    				<option value="<?php echo $layout_['id']; ?>" selected="selected"><?php echo $layout_['name']; ?></option>
    				<?php } else { ?>
    				<option value="<?php echo $layout_['id']; ?>"><?php echo $layout_['name']; ?></option>
    				<?php } ?>
    				<?php } ?></select>
    			  <td>
    			<td width="25%"><?php echo $entry_restore; ?></td>
    			<td><input type="file" name="csv_import" /></td>
     
    			<td><div class="buttons"><a onclick="$('#for_m').submit();" class="button"><span><?php echo $button_import; ?></span></a><a onclick="location='<?php echo $export; ?>'"class="button"><span><?php echo $button_export; ?></span></a></div></td> 
    			</td><?php } ?>
     
    		  </tr>
     
    		</table>
    	  </form>
    
    А в контроллере следующую обработку:
    Код:
    	public function index() {
    	 
    		... ... ... ..
    	 
    	 
    		if (($this->request->server['REQUEST_METHOD'] == 'POST') && ($this->validate())) {
    			if ((isset( $this->request->files['csv_import'] )) && (is_uploaded_file($this->request->files['csv_import']['tmp_name']))) {
    				$file = $this->request->files['csv_import']['tmp_name'];
    				$layout_id = $_POST['layout_id'];
    				if ($this->model_tool_export->upload($file, $layout_id)) {
    				//echo $file;
    					$this->session->data['success'] = $this->language->get('text_success');
    					$this->redirect($this->url->link('module/evaluation', 'token=' . $this->session->data['token'], 'SSL'));
    				}
    				else {
    					$this->error['warning'] = $this->language->get('error_upload');
    				}
    			}
    		}