Změna struktury a nutná úprava formatTemplateFiles a formatLayoutTemplateFiles

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

Ahoj, jsem v nette poněkud nový a rozhodl jsem se dělat rozsáhlejší projekt s tím, že se budu učit za chodu. Tak prosím omluvte pokud je má otázka úplně hloupá. Předělal jsem základní strukturu App na tohle. Pochopitelně je potřeba změnit formatTemplateFiles() a formatLayoutTemplateFiles. V případě formatTemplateFiles jsem změnil a snad správně (obsah se zobrazí). Tak prosím jestli by se na to mohl někdo kouknout jestli je to opravdu dobře nebo jsem jen trefil náhodně něco použitelného. Ale v případě formatLayoutTemplateFiles nějak nechápu jak to tedy má vypadat, tak jestli by mi mohl někdo prosím ukázat jak je to správně a případně i s nějakým vysvětlením. Popřípadě to ještě je třeba při takovéto změně struktury. Předem děkuji.

app
├── modules
│   ├── Web
│   │   ├── presenters
│   │   │   ├── Default
│   │   │   │   ├── templates
│   │   │   │   │   └── default.latte
│   │   │   │   └── DefaultPresenter.php
│   │   │   └── Product
│   │   │       ├── templates
│   │   │       │   ├── default.latte
│   │   │       │   └── edit.latte
│   │   │       └── ProductPresenter.php
│   │   └── templates
│   │       └── @layout.latte
│   └── Admin
│       ├── modules
│       │   └── (more modules)
│       ├── presenters
│       │   └── Default
│       │       ├── templates
│       │       │   └── default.latte
│       │       └── DefaultPresenter.php
│       └── templates
│           └── @layout.latte
├── presenters
│   └── Base
│       └── BasePresenter.php
└── templates
    └── @layout.latte
/**
	 * Formats layout template file names.
	 * @return array
	 */
	public function formatLayoutTemplateFiles()
	{
		if (preg_match('#/|\\\\#', $this->layout)) {
			return [$this->layout];
		}
		list($module, $presenter) = Helpers::splitName($this->getName());
		$layout = $this->layout ? $this->layout : 'layout';
		$dir = dirname($this->getReflection()->getFileName());
		$dir = is_dir("$dir/templates") ? $dir : dirname($dir);
		$list = [
			"$dir/templates/@$layout.latte",
			"$dir/templates.@$layout.latte",
		];
		do {
			$list[] = "$dir/templates/@$layout.latte";
			$dir = dirname($dir);
		} while ($dir && $module && (list($module) = Helpers::splitName($module)));
		return $list;
	}


	/**
	 * Formats view template file names.
	 * @return array
	 */
	public function formatTemplateFiles()
	{
		list(, $presenter) = Helpers::splitName($this->getName());
		$dir = dirname($this->getReflection()->getFileName());
		$dir = is_dir("$dir/$presenter") ? $dir : dirname($dir);
		return [
			"$dir/$presenter/templates/$this->view.latte",
			"$dir/$presenter/templates.$this->view.latte",
		];
	}

Editoval jarda256 (15. 11. 2016 19:24)

Šaman
Člen | 2666
+
+1
-
  • Dumpni si výsledná pole. Jsou to pole cest, na kterých se soubory šablon, resp. layoutů budou hledat.
  • Je dobré na konec přidat pole z originální parent::format…() metody, čistě kvůli kompatibilitě, nebo když k projektu přijde někdo nový.
  • Naopak uvádět jak verzi s podadresářem, tak s tečkou u svých vlastních pravidel nemusíš (pokud nechceš používat obě verze).
jarda256
Člen | 130
+
0
-

Šaman napsal(a):

  • Dumpni si výsledná pole. Jsou to pole cest, na kterých se soubory šablon, resp. layoutů budou hledat.
  • Je dobré na konec přidat pole z originální parent::format…() metody, čistě kvůli kompatibilitě, nebo když k projektu přijde někdo nový.
  • Naopak uvádět jak verzi s podadresářem, tak s tečkou u svých vlastních pravidel nemusíš (pokud nechceš používat obě verze).

Tak to mám :) Jen by mě ještě zajímala jedna věc…díky téhle struktuře musím tedy volat způsobem $this->redirect(‚Web:Articles:Show‘) a pak mám v url localhost/sandbox/www/web.Articles/show…jde se tohoto nějak zbavit?

Editoval jarda256 (15. 11. 2016 19:55)