dotaz na získaní hodnot z config.neon
- vlkodlak
- Člen | 175
zdravím,
„zápasím“ s tím, že nevidím data z konfiguračního souboru a již
motám se v kruhu
config.neon
parameters:
webLang: # dostupné jazykové mutace
- cs
- en
- de
default: cs
a do ladoňky chci jen vypsat vypsat podobu pole a vyzkoušel jsem tyto kombinace
HomepagePresenter.php
declare(strict_types=1);
namespace App\Presenters;
use Nette;
use Nette\Application\UI\Form;
final class HomepagePresenter extends Nette\Application\UI\Presenter
{
public function renderDefault()
{
bdump($this->context);
bdump($this->context->getParameters());
bdump($this->context->parameters);
bdump($this->context->getParameters('webLang'));
bdump('jen tento radek se ukaze v ladence');
}
}
jen poslední něco ukáže u všech ostatních nic … je tu tak málo kódu a nevidím chybu :-(
Editoval vlkodlak (6. 12. 2020 1:34)
- Marek Znojil
- Člen | 90
Ahoj,
buď můžeš parametry z confingu předat presenteru, který zaregistruješ do služeb:
services:
# konstruktorem
- App\Presenters\HomepagePresenter(%webLang%)
# setterem
-
create: App\Presenters\HomepagePresenter
setup:
setWebLang(%webLang%)
class HomepagePresenter extends BasePresenter{
public function __constructor($webLang){}
public function setWebLang($webLang){}
}
nebo si vytvoříš službu, která je bude předávat napříč aplikací (Méně čisté řešení.):
parameters:
configuration:
webLang:
- cs
- en
default: cs
# ..
services:
- Configuration(%configuration%)
class Configuration{
/** @var array */
protected $configuration;
public function __construct(array $configuration){
$this->configuration = $configuration;
}
/** @return mixed */
public function __get(string $name){
return $this->configuration[$name];
}
}
class BasePresenter extends Nette\Application\UI\Presenter{
/** @var Configuration @inject */
public $configuration;
protected function beforeRender(): void{
parent::beforeRender();
bdump($this->configuration->webLang);
}
}
- Marek Znojil
- Člen | 90
vlkodlak napsal(a):
@MarekZnojil Tak jsem to zkusil, ale při volaní (odkazovaní) na %webLang% (nebo v druhem případě %configuration%) u vytváření sevisy píše - Missing parameter ‚webLang‘ … co tomu může chybět? proč to nevidí?
Jak máš definované parameters, můžeš poslat ukázku?
- vlkodlak
- Člen | 175
Marek Znojil napsal(a):
vlkodlak napsal(a):
@MarekZnojil Tak jsem to zkusil, ale při volaní (odkazovaní) na %webLang% (nebo v druhem případě %configuration%) u vytváření sevisy píše - Missing parameter ‚webLang‘ … co tomu může chybět? proč to nevidí?
Jak máš definované parameters, můžeš poslat ukázku?
promiň nerozumim požadavku
parameters:
webLang: # dostupne jazykove mutace
- cs
- en
- de
default: cs
ale na to se asi neptaš
- vlkodlak
- Člen | 175
při pokusech, náhodou, jsem přišel u jiné starší instalaci nette, při porovnání laděnky vypisovaní obsahu „containeru…“, se mi zda, že se nepředává pole „Parameters“ je to možné? Prosím, jak případně sjednat nápravu u stávající instalace? … nainstalovat novou čistou verzi, nakopírovat projekt tam a doufat, že tam vše bude fungovat?
@MarekZnojil : vyzkoušeno na tom druhem nette a tam %…% zápis funguje. Otázka v čem je možný rozdíl? Čista „instalace“ a instalace se Sandboxem? Jak nastavit i u první varianty předávaní Parameters?
Editoval vlkodlak (7. 12. 2020 16:17)
- Šaman
- Člen | 2667
Na řešení takovýchhle problémů je dobré někam nasdílet celý projekt
(ideálně jen Sandbox s tou jednou věcí, která nefunguje).
Načítat to normálně má. Někde bude chyba. Může to být věc
mezer/tabulátorů v congigu, můžeš to mít co já vím třeba ve špatně
includovaném configu, nebo jiná věc. Samotné kusy kódů které posíláš
by fungovat měly. (Teda nevím jak $presenter->context->…
,
to je už dlouho deprecated. Ale rešení od @MarekZnojil by fungovat
mělo, chyba bude nejspíš někde mimo ukázaný kód.)
P.S. Ideálně třeba na GitHub, kde si to můžeme proklikat online a nemusíme stahovat nějaký archív a ten rozbalovat. Spousta z nás se na nějakych podobnych blbostech už zasekla a teď když vidíme reálný kód, trkne nás to.
Editoval Šaman (7. 12. 2020 15:44)
- vlkodlak
- Člen | 175
Šaman napsal(a):
Na řešení takovýchhle problémů je dobré někam nasdílet celý projekt (ideálně jen Sandbox s tou jednou věcí, která nefunguje).
Načítat to normálně má. Někde bude chyba. Může to být věc mezer/tabulátorů v congigu, můžeš to mít co já vím třeba ve špatně includovaném configu, nebo jiná věc. Samotné kusy kódů které posíláš by fungovat měly. (Teda nevím jak$presenter->context->…
, to je už dlouho deprecated. Ale rešení od @MarekZnojil by fungovat mělo, chyba bude nejspíš někde mimo ukázaný kód.)P.S. Ideálně třeba na GitHub, kde si to můžeme proklikat online a nemusíme stahovat nějaký archív a ten rozbalovat. Spousta z nás se na nějakych podobnych blbostech už zasekla a teď když vidíme reálný kód, trkne nás to.
souhlasím a děkují již jsem se hnul z místa