Předani dat z externiho pole presenteru?
- marcelxy
- Člen | 70
Zdravím, mám malý dotaz vím že to asi souvísí z mými hlubokými neznalostmi oop ale potřebuji předat data do presenteru které mám uložené v externím poli jakože:
$neco =array(
'polozka1'= >'nejaky text',
'polozka2'= >'nejaky text2');
toto mám v samostatném soboru .php .
Tak abych je pak v rendru mohl předat šabloně a ty data vykreslit, neví
prosím někdo jak to pole dostanu do třídy presenteru abych sním mohl pak
dál pracovat? v podstatě se jedna o data jako z db akorát jsou uložena
v externím poli .Já vím že by se měly data číst z db ale potřebuji to
z několika dúvodu takto. díky za rady
Editoval marcelxy (26. 2. 2014 18:45)
- japlavaren
- Člen | 404
ak su to data, pouzi model.
tj. vytvor model, ktory bude tie data nacitavat, model injectni do presentru a mas pravdepodobne co si chcel. staci takto, ci rozpisat??
- marcelxy
- Člen | 70
no asi nejakou malou pomoc bych jeste potreboval model chapu, ale nevim jak
v tom modelu nactu to externi pole??
chci aby zustalo externi aby se dalo jednoduse i laikem editovat.Nechci ho cele
prepsat do modelu chci ho tam nacist a kdyz to pujde v modelu nacist musi to
jit i nacist v presenteru stejne tak jak muz cist z db v presenteru ne?
Editoval marcelxy (26. 2. 2014 19:41)
- japlavaren
- Člen | 404
„no asi nejakou malou pomoc bych jeste potreboval model chapu, ale nevim jak v tom modelu nactu to externi pole??“
- posli sem ukazku, ako to externe pole vyzera
„chci aby zustalo externi aby se dalo jednoduse i laikem editovat.Nechci ho cele prepsat do modelu chci ho tam nacist a kdyz to pujde v modelu nacist musi to jit i nacist v presenteru stejne tak jak muz cist z db v presenteru ne?“
- ano, mozes to nacitat i v presenteri. oddelene modely ocenis casom, ak budes ten isty kod potrebovat prepisat na viac miestach, preto ich doporucujem pouzivat i zo zaciatku
daj ukazku toho suboru, nech vymyslime, ako ho nacitat
- vitkutny
- Člen | 73
jestli jsem to dobře pochopil tak chceš mít někde soubor
<?php
$neco =array(
'polozka1'= >'nejaky text',
'polozka2'= >'nejaky text2');
return $neco;
načítat do proměné ze souboru můžeš takto
$mojePole = include __DIR__.'/cesta/k/souboru/s/polem.php';
místo toho můžeš zkusit dát to pole do souboru mojePole.neon
parameters:
mojePole:
polozka1: 'nejaky text'
polozka2: 'nejaky text2'
v configu si tento soubor připojit
includes:
- mojePole.neon
vytvorit modelovou tridu
class MojePoleRepository {
private $mojePole;
public function __construct(array $mojePole){
$this->mojePole=$mojePole;
}
public function getData(){
return $this->mojePole;
}
}
tuto tridu zaregistrovat jako sluzbu a predat ji pole z konfigu
services:
- MojePoleRepository(%mojePole%)
tuto službu si vyžádat v presenteru… pole máš v samostatným souboru a dokáže ho upravit i laik, pro laika myslím bude formát .neon i lepší
- japlavaren
- Člen | 404
parameters:
mojePole:
polozka1: 'nejaky text'
polozka2: 'nejaky text2'
by som nedoporucoval!!! ak tam zada medzeru miesto tab/spravi inu chybu, rozbije to konfigurator a nespusti cely web
Editoval japlavaren (26. 2. 2014 22:33)
- marcelxy
- Člen | 70
no vypada uplne jednoduse a stejne jak sem uvedl na zacatku, proste to resim
timto spusobem kvuli zjednoduseni editace ze veskere texty na strance mam
ulozene v poli, nemusim vytvaret db a slozity admin pro obcasnou editaci to
pole staci a i laik je v nem schopen ten text najit a upravit ,coz v tech
sablonach bude delat tezko , v klasickem php to tak resim vzdy, ale v oop
nevim jak to pole dostat do presenteru tak abych jednotlive promene pak predal
sablone a nasledne je vykreslil.
takze externi soubor s texty.php
<?php
$textyProStr1= array(
'polozka1'=>'text1',
'polozka2'=>'text2',
'polozka3'=>'text3',);
$textyProStr2= array(
'polozka1'=>'text1',
'polozka2'=>'text2',
'polozka3'=>'text3',);
a pak uz potrebuju
public function renderDefault(){
(a tady potrebuji ten sobor texty.php)
$this->template->texty = $textyProStr1;
}
a v sablone pak
<div>{$texty->polozka1}</div>
<div>{$texty->polozka2}</div>
jak kdybych to vypisoval z db. nic vic, ale nejsem schopen to externi pole
do toho rendru dostat.
To je moje otazka? a nechci to delat jinak pro jednoduchost, a nechci to delat
pres confi.neon nebot to nemuze editovat laik zada tam spatne mezery a nepojede
nic! diky za rady
Editoval marcelxy (27. 2. 2014 0:01)
- japlavaren
- Člen | 404
Mysteria napsal(a):
Co tohle?
public function renderDefault() { require_once __DIR__ . '/soubor_s_polem.php'; $this->template->texty = $textyProStr1; }
ten tvoj kod ma niekolko zadrhelov. ako prve by som nepouzil require, ale include a kontroloval by som, ci sa to nacitalo ok
<?php
$data = @include __DIR__ . '/data.php';
if(!is_array($data)) $data = array();
?>
a ako pisem, cele by som to dal do modelu (kde si konstruktorom, ako parameter v v config.neon predam cestu k tomu suboru) co mi pride ako najcistejsie riesenie
Editoval japlavaren (27. 2. 2014 0:18)
- marcelxy
- Člen | 70
Mysteria napsal(a):
Co tohle?
public function renderDefault() { require_once __DIR__ . '/soubor_s_polem.php'; $this->template->texty = $textyProStr1; }
ok to sem udelal ale nejede to
dal sem
public function renderDefault(){
$promena = include __DIR__.'/texty.php';
$this->template->texty = $promena;
}
je to asi totez a haze to „Trying to get property of non-object“ ale az ze seblony ne z rendru kde pak mam
<div>{$texty->polozka1}</div> zkousel sem i <div>{$texty['polozka1']}
tak ted nevim jestli je cely postup spatny nebo jen zapis v sablone?
Editoval marcelxy (27. 2. 2014 0:18)
- David Matějka
- Moderator | 6445
Mne ta chybova hlaska prijde dost jasna „Trying to get property of
non-object“, snazis se k poli pristupovat jako
k objektu $texty->polozka1
- japlavaren
- Člen | 404
daj sem format toho tvojho suboru, ktory nacitavas, bez toho ti asi nik neporadi
- Šaman
- Člen | 2668
Model je obyčejná třída, která ti odstíní presenter od konkrétního
úložiště. Prostě si vytvoř třídu NecoModel (NecoRepository) a tu předej
do presenteru jako službu. Ta třida bude obsahovat metody
getNeco()
, getNecoJineho()
, zcela podle pravidel OOP.
Presenter pak nezajímá, kde ta třída data získá. Jestli z db, souboru,
nebo jestli ta pole pro začátek třeba nakódíš přímo do těch
get metod.
- marcelxy
- Člen | 70
matej21 napsal(a):
Mne ta chybova hlaska prijde dost jasna „Trying to get property of non-object“, snazis se k poli pristupovat jako k objektu
$texty->polozka1
jo to sem taky pochopil ale jak to mam v te sablone napsat? abych tu
promenou vypsal?
zkousel jsem i
<div>{$texty['polozka1']}
to chybu nevyhodi ale text taky nevypise tekze nevim?
- marcelxy
- Člen | 70
japlavaren napsal(a):
daj sem format toho tvojho suboru, ktory nacitavas, bez toho ti asi nik neporadi
<?php
$textyProStr1= array(
'polozka1'=>'text1',
'polozka2'=>'text2',
'polozka3'=>'text3',);
$textyProStr2= array(
'polozka1'=>'text1',
'polozka2'=>'text2',
'polozka3'=>'text3',);
to je on nic vic sloziteho pouze texty pro jednotlive stranky a potrebuju je predat sablone myslim ze to je primitivni vec v klasickem php dam include „texty.php“ a pak uz si pouzivam jednotlive polozky jak potrebuji ale tu nevim jak to do te sablony dostat?
Editoval marcelxy (27. 2. 2014 0:34)
- marcelxy
- Člen | 70
Šaman napsal(a):
Model je obyčejná třída, která ti odstíní presenter od konkrétního úložiště. Prostě si vytvoř třídu NecoModel (NecoRepository) a tu předej do presenteru jako službu. Ta třida bude obsahovat metody
getNeco()
,getNecoJineho()
, zcela podle pravidel OOP. Presenter pak nezajímá, kde ta třída data získá. Jestli z db, souboru, nebo jestli ta pole pro začátek třeba nakódíš přímo do těch get metod.
jo to chapu ale jen potrebuju vedet jak ted v tom getNeco(){destanu ty data z toho externiho pole.php} nic vic, vy mi porad vsichni vysvetlujete to co uz vim ja akorat potrebuji ty texty.php zachovat aby je mohl editovat kdokoli ne to pole primo napsat do toho modelu! to vim ze jde ale pak uz to postrada tu jednoduchost te editace a proto to tak delam!
Editoval marcelxy (27. 2. 2014 1:02)
- japlavaren
- Člen | 404
<?php
class NecoModel
{
public function getPage1(){
// includom ziskas tu premennu v aktualnom kode
@include __DIR__ . '/file.php';
return $textyProStr1;
}
}
?>
Editoval japlavaren (27. 2. 2014 1:09)
- marcelxy
- Člen | 70
japlavaren napsal(a):
<?php class NecoModel { public function getPage1(){ // includom ziskas tu premennu v aktualnom kode @include __DIR__ . '/file.php'; return $textyProStr1; } } ?>
jejej diky moc to sem potreboval tak primitivni reseni diky za trpelivost!! uz to jede!
Editoval marcelxy (27. 2. 2014 7:17)