Joomla MVC Component — Обновление записи базы данных с загрузкой файла

Поэтому я нахожу это немного странным, потому что поле DB обновлялось без особых усилий с моей стороны, пока я не начал писать в функции загрузки файлов. Теперь база данных не обновляется, но загрузка файла работает. Казалось, что все вставляется, обновляется и т. Д. Просто отлично, просто указав собственные имена в XML-файле формы администратора:

<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset>
<field
name="course_id"type="hidden" />
<field
name="course_name"type="text"label="Course Name: "description="Full name of the course (up to 255 characters)"default="" />
<field
name="course_dept"type="text"label="Course Department: "description="4 character department code. Examples: BIOL, CREL, CHEM"default="" />
<field
name="course_code"type="text"label="Course Code: "description="4 digit course code which immediately preceeds department code"default="" />
<field
name="course_desc"type="textarea"label="Course Description: "rows="10"description="As seen in the academic calendar"default="" />
<field
name="course_graphic_url"type="file"label="Course Graphic: "description="Graphical representation of the course"accept="image/*" />
</fieldset>
</form>

Из того, что я прочитал, я должен написать логику обновления базы данных. Просто странно, что это работало раньше. Теперь я новичок в разработке компонентов для Joomla MVC, поэтому, возможно, я скопировал / вставил несколько строк кода, которые сделали бы это без моей реализации … Но я сомневаюсь в этом. Вот то, что я пытался, но я где-то терпит неудачу. Это /admin/controllers/course.php:

<?php defined('_JEXEC') or die;

jimport('joomla.application.component.controllerform');

class CourseListControllerCourse extends JControllerForm {
protected $view_list = 'CourseList';

function save($key = null, $urlVar = null){
// ---------------------------- Uploading the file ---------------------
// Neccesary libraries and variables
jimport( 'joomla.filesystem.folder' );
jimport('joomla.filesystem.file');

$jinput = JFactory::getApplication()->input;
$files = $jinput->files->get('jform');
$filename = $files['course_graphic_url']['name'];
$folder = JPATH_SITE . "/" . "images" . "/" . "courselist";

// Create the folder if not exists in images folder
if ( !JFolder::exists( $folder ) ) {
JFolder::create( $folder, 0777 );
}

$src = $files['course_graphic_url']['tmp_name'];
$dest = JPATH_SITE . "/" . "images" . "/" . "courselist" . "/" . $filename;

if (isset($files['course_graphic_url'])) {
JFile::upload( $src, $dest );
}

$db = JFactory::getDBO();
$query = $db->getQuery(true);
$cid =  $jinput->get('course_id');

$fields = array($db->quoteName('course_graphic_url') . " = " . $db->quote($dest));
$conditions = array($db->quoteName('course_id') . " = " . $cid);

$query
->update($db->quoteName('#__courselist'))->set($fields)->where($conditions);

$db->execute($query);

return parent::save($key = null, $urlVar = null);
}
}

Надеюсь, я предоставил достаточно информации … Я все еще застрял в режиме выходных, поэтому трудно сказать: P Заранее спасибо!

РЕДАКТИРОВАТЬ: Я понимаю, что course_id, переменная url, которая появляется, когда я нахожусь на странице редактирования, не пропускалась (насколько я могу судить) через нажатие кнопки сохранения. Я попытался создать скрытое поле ввода со значением, в надежде, что я исправлю все то, что неправильно в современном мире, но безуспешно.

Что странно для меня, так это то, что все остальные поля БД обновляются корректно, без дополнительного SQL. Соответствующее поле было обновлено значениями в соответствующих полях формы. Я НАСТОЯЩИЙ СМОТРЕТЬ ПРЯМО СЕЙЧАС.

1

Решение

Прежде всего, большое спасибо ВВП в Joomla! Обмен стеками, ведущий меня в правильном направлении. Я должен сказать, что проблема была довольно глупой. Как вы заметите в моем коде, я получаю объект запроса:

$query = $db->getQuery(true);

Я строю запрос:

$fields = array($db->quoteName('course_graphic_url') . " = " . $db->quote($dest));
$conditions = array($db->quoteName('course_id') . " = " . $cid);

$query
->update($db->quoteName('#__courselist'))->set($fields)->where($conditions);

Я, однако, не устанавливаю объект запроса !!!! Вот недавно добавленный код. Что за дурачок: P

$db->setQuery($query);
$db->execute($query);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]