Ako vytvorím presenter+sablonu pomocou composera?
- Phalanx
- Člen | 310
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)
- CZechBoY
- Člen | 3608
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
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
- Takeshi
- Člen | 596
Š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
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é).