JZechy fileupload upload souboru a uložení informace o souboru do db

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kini
Člen | 13
+
0
-

Dobrý den.
V Nette jsem začátečník a chci si na web dát upload souborů. Rozhodl jsem se k tomu použít jZechy addon, úspěšně jsem ho nainstaloval a nahrál několik souborů. Na problém jsem narazil až když jsem chtěl uložit url souboru a id uživatele který ho uploadoval.

<?php
public function save(Nette\Http\FileUpload $file, array $params = array()) {

$file->move("../galerie/". $file->getSanitizedName());
}
?>

Předpokládám že to id do modelu dostanu z presenteru v $params

<?php
->setParams(["id" => 10]);
?>

Do modelu jsem připsal kod pro vložení dat do db a po uploadu mi to vrátilo chybu:
Call to a member function table() on null
Model vypadá takto:

<?php
public function save(Nette\Http\FileUpload $file, array $params = array()) {

$file->move("../galerie/". $file->getSanitizedName());

$this->database->table(self::IMG_TABLE_NAME)->insert(
                    array(
						self::COLUMN_IMAGE => $params,
                 	)
);
?>
JZechy
Člen | 161
+
+1
-

@kini A plníš nějak atribut $database v tom modelu? Ta chyba ti říká, že voláš funkci na něčem, co není objekt. Takže evidentně $database nijak neplníš.

Editoval JZechy (30. 3. 2017 15:10)

kini
Člen | 13
+
0
-

Ano máte pravdu.
Myslel jsem že to půjde pomocí extends jako u ostatních modelů co mám ale nešlo

<?php
class UploadModel extends BaseManager implements \Zet\FileUpload\Model\IUploadModel {
?>

Musel jsem přenést obsah souboru BaseManager.php do toho upload modelu.

<?php
/** @var Context Instance třídy pro práci s databází. */
	protected $database;

	/**
	 * Konstruktor s injektovanou třídou pro práci s databází.
	 * @param Context $database automaticky injektovaná třída pro práci s databází
	 */
	public function __construct(Context $database)
	{
		$this->database = $database;
	}
?>

Editoval kini (30. 3. 2017 15:18)