Ako vytvorím presenter+sablonu pomocou composera?

Takeshi
Člen | 596
+
0
-

Ahojte.

Dá sa vytvoriť presenter + default šablóna latte pomocou presentera?
Ďakujem

Phalanx
Člen | 310
+
0
-

Chceš si napsat skript, který ti bude kopírovat nějaký výchozí presenter s šablonou? Jasně, jde to. Měl jsem kdysi v projektu něco takového (teď už nepoužívám, ale může ti být užitečné):

<?php

/**
 * create_page [admin|front] Plain SomeNewPage
 */

use Nette\Utils\Finder;

const REPLACE = "RPLC";

require_once __DIR__ . '/../app/bootstrap.php';


if ( ! isset($argv[1]) || !isset($argv[2]) || !isset($argv[3])) {
	echo "USAGE: create_page [admin|front] Plain SomeNewPage\n";
	die(1);
}

if ( ! ($argv[1] == 'admin' || $argv[1] == 'front')) {
	echo "Uknown module (must be front or admin)!";
	die(2);
}

$base_path = dirname(__DIR__);
$module = ucfirst($argv[1])."Module";
$page = $argv[2];
$presenterName = $argv[3];

$dir = "{$base_path}/_install/page_templates/{$module}/{$page}";

if (!is_dir($dir)) {
	echo "Directory {$dir} not exists!";
	die(3);
}


$presenters = Finder::findFiles('*.*')->from("{$dir}/presenter");
$templates = Finder::findFiles('*.*')->from("{$dir}/templates");

foreach ($presenters AS $file => $fileInfo) {
	$new = str_replace($fileInfo->getFilename(), REPLACE, $presenterName);

	$newFile = "{$base_path}/app/{$module}/presenters/{$new}Presenter.php";
	copy($file, $newFile);
	$data = file_get_contents($newFile);
	file_put_contents($newFile, str_replace(REPLACE, $presenterName, $data));

	mkdir("{$base_path}/app/{$module}/templates/{$presenterName}");
}


foreach ($templates AS $file => $fileInfo) {
	$new = $fileInfo->getFilename();
	$newFile = "{$base_path}/app/{$module}/templates/{$presenterName}/{$new}";
	copy($file, $newFile);
	$data = file_get_contents($newFile);
	file_put_contents($newFile, str_replace(REPLACE, $presenterName, $data));
}


?>

Editoval Phalanx (14. 12. 2018 9:23)

Takeshi
Člen | 596
+
0
-

Mám na mysli niečo ako

composer create-presenter Kontakt

Následne by mi vytvorilo

  1. Priečinok „Kontakt“
  2. V tomto priečinku default.latte
  3. Plus presenter „KontaktPresenter.php“

Aby som to nemusel znovu a znovu vytvárať manuálne.

Editoval Takeshi (14. 12. 2018 9:35)

CZechBoY
Člen | 3608
+
0
-

Tak na to by sis musel zaregistrovat command v composeru. Můžeš mrknout na yeoman pro nette, možná ti to bude stačit nebo se budeš moct od něčeho aspoň odpíchnout https://forum.nette.org/…tte-projekty

Takeshi
Člen | 596
+
0
-

CZechBoY napsal(a):

Tak na to by sis musel zaregistrovat command v composeru. Můžeš mrknout na yeoman pro nette, možná ti to bude stačit nebo se budeš moct od něčeho aspoň odpíchnout https://forum.nette.org/…tte-projekty

Tak ja sa v tom nejak vrtat nejdem, ja len ci je nieco take mozme, lebo sa mi vidi, ze v zend frameworku to existuje …

zf create controller Auth
Šaman
Člen | 2667
+
+1
-

No, composer je ale něco jiného, než zf. A composer o Nette nic neví. To, co popisuješ, opravdu splní spíš to řešení od Falangy (Phalanx).

Takeshi
Člen | 596
+
0
-

Šaman napsal(a):

No, composer je ale něco jiného, než zf. A composer o Nette nic neví. To, co popisuješ, opravdu splní spíš to řešení od Falangy (Phalanx).

Jaj tak. Ja som myslel, že to je výrobok od nette. Tak potom nič. Ďakujem. BTW … neviem, či sa nejako označujú tieto správy/diskusia ako za uzavreté, teda že je problém vyriešený.

Šaman
Člen | 2667
+
0
-

Nn. Jestli tě zmátlo to, že se Nette projekt zakládá (může založit) composerem, tak to je trochu jinak. Composer je univerzální správce závislostí a tím create-project si jen naklonuješ nějaký existující repozitář do nové složky (v případě Nette je to Sandbox, nebo web-project) a dotaháš všechny závislosti (php, nikoliv frontendové).