Filesytem – obrázek ke článku

vyndalin
Člen | 11
+
0
-

Ahoj,
nemohl byste mi někdo poradit jak na filesystem v nette? Věc se má tak, že kamarád, který napsal a spravoval stránky náhle zemřel a jeho manželka mne požádala jestli bych se na ně nemohl podívat. V nette neumím a PHP pokus-omyl-google. Data z DB si načíst dokážu, ale potřeboval bych vidět názorný příklad jak na to (pak už budu zkoušet dokud se nedopracuji k výsledku). Do dokumentace jsem se díval, ale moudrý z toho nejsem.
Potřeboval bych kousek kódu a kam co zapsat (presenter/model/šablona). Co jsem tu tak pročítal, tak cesta k souboru se zapisuje do nějakého configu. S tím už bych si poradil (asi :)).
Děkuji předem všem, kteří mnou nebudou pohrdat a zkusí poradit.

David Grudl
Nette Core | 8139
+
+2
-

Zkus si najít někoho, kdo PHP rozumí, a dát si s ním schůzku. Nebo ideálně aby ten web spravoval. Tohle není něco, co by se dalo vyřešit odpovědí na fóru,

m.brecher
Generous Backer | 758
+
0
-

@vyndalin

V nette neumím a PHP pokus-omyl-google

jak na filesystem v nette?

Potřeboval bych kousek kódu a kam co zapsat (presenter/model/šablona)

To je těžký, zadání co vlastně potřebuješ je příliš vágní.

Jestli Nette ani PHP neumíš tak potom to bude dost obtížné Ti nějak radit.

Práce se soubory pomocí FileSystem není složitá:

FileSystem::delete($filePath);  // doporučuji ověřit is_file(filePath) === true, umí totiž smazat celý server!
FileSystem::rename($originPath, $targetPath, overwrite: false);
......

Pokud jsou statické soubory (fotografie) v adresáři /www, což bezpochyby budou, potom cestu do /www získáš z konfigurace ze souboru /config/xxxx.neon.

Předáš si ho v konfiguraci do třídy, která s ním bude pracovat – typicky modelová třída třeba ImageRepository:

config.neon

services:
   - App\Model\ImageRepository(%wwwDir%)  // parametr z konfigurace do konstruktoru služby

a v konstruktoru ImageRepository si ho uložíš do property + předáš si Nette Databázi, která je v objektu Explorer (zjednodušený kód):

class ImageRepository
{
	private Explorer $database;
	private string $wwwDir;

	public function __construct(Explorer $database, string $wwwDir)
    {
        $this->database = $database;
		$this->wwwDir = $wwwDir;
    }

	public function saveImageFile(.....)
	{
		// a tadu už $wwwDir použiju

		$filePath = $this->wwwDir.'/images/'.$fileName;

		.......

	}
}

atd… přeji ať se daří, v Nette to jde snadno, co nebudeš vědět najdeš v dokumentaci, nebo Ti někdo poradí.

Editoval m.brecher (20. 3. 2023 17:01)

vyndalin
Člen | 11
+
0
-

David Grudl napsal(a):

Zkus si najít někoho, kdo PHP rozumí, a dát si s ním schůzku. Nebo ideálně aby ten web spravoval. Tohle není něco, co by se dalo vyřešit odpovědí na fóru,

Dobrý den Davide,
naprosto Vám rozumím, přesto mě láká se nette naučit – nette je sexy.
Děkuji za radu i Vaši práci.

Vyndalin

vyndalin
Člen | 11
+
0
-

m.brecher napsal(a):

@vyndalin

V nette neumím a PHP pokus-omyl-google

jak na filesystem v nette?

Potřeboval bych kousek kódu a kam co zapsat (presenter/model/šablona)

To je těžký, zadání co vlastně potřebuješ je příliš vágní.

Jestli Nette ani PHP neumíš tak potom to bude dost obtížné Ti nějak radit.

Práce se soubory pomocí FileSystem není složitá:

FileSystem::delete($filePath);  // doporučuji ověřit is_file(filePath) === true, umí totiž smazat celý server!
FileSystem::rename($originPath, $targetPath, overwrite: false);
......

Pokud jsou statické soubory (fotografie) v adresáři /www, což bezpochyby budou, potom cestu do /www získáš z konfigurace ze souboru /config/xxxx.neon.

Předáš si ho v konfiguraci do třídy, která s ním bude pracovat – typicky modelová třída třeba ImageRepository:

config.neon

services:
   - App\Model\ImageRepository(%wwwDir%)  // parametr z konfigurace do konstruktoru služby

a v konstruktoru ImageRepository si ho uložíš do property + předáš si Nette Databázi, která je v objektu Explorer (zjednodušený kód):

class ImageRepository
{
	private Explorer $database;
	private string $wwwDir;

	public function __construct(Explorer $database, string $wwwDir)
    {
        $this->database = $database;
		$this->wwwDir = $wwwDir;
    }

	public function saveImageFile(.....)
	{
		// a tadu už $wwwDir použiju

		$filePath = $this->wwwDir.'/images/'.$fileName;

		.......

	}
}

atd… přeji ať se daří, v Nette to jde snadno, co nebudeš vědět najdeš v dokumentaci, nebo Ti někdo poradí.

Mockrát děkuji. Přesně toto jsem potřeboval. Potřeboval jsem nakopnout správným směrem. Nyní budu zkoušet. Velice si Vážím času, který jste mi věnoval a který Vám nikdy nevrátím. Ať se Vám daří a ještě jednou děkuji.
Vyndalin