Propojeni aplikace s Android app
- saimons
- Člen | 293
Ahoj chtel bych se zeptat jak by jste resili propojeni jiz hotove aplikace pro web s Android aplikaci. Je mi celkem jasne jak udelat zabezpeceni a overovani. A take asi nebude problem s tim v presenteru rozpoznavat odkud prisel Request a podle toho posilat bud do template nebo pres JSON. Ale kde vidim problem, v pouziti Nette\Database, protoze na urovni Presenteru jeste neznam data, ktera potrebuji odeslat. Protoze mam i v templatu pouzite funkce na \Nette\Database\Table\Selection. Jedna se o vetsi aplikaci s cca 100 sablonama, takze se mi moc nechce vsechno prepisovat. Existuje nake reseni jak to obejit, nebo si budu muset poupravit sablony, popripade vytvorit specialni sablony pro Android a pouzit treba XML, nebo nake dalsi tridy ktere mi predpripravi data do JSONu? Predem dekuji za jakoukoliv radu ci zkusenosti.
- Michal Vyšinský
- Člen | 608
Čeho chceš dosáhnout?
Tahat některá data z webu do Android aplikace? – udělej si REST API
Udělat z webu „nativní“ aplikaci? – použil bych WebView
- saimons
- Člen | 293
Michal: Jasne jak pises, Rest Api si klidne udelam, to by nemel byt problem,
jen je problem ze ty data kompletni, mam az v templatu. Podivam se na to
WebView. ale na slozitost te aplikace to asi nebude uplne idalni.
Akadlec: No Predavam \Table\Selection do sablony a pak kdyz potrebuju treba
pristoupit pres FK k nake dalsi tak to mam napsane v sablone. Usnadnilo to
dost praci, nez si vsechny data predpripravovat v Modelu, dokonce to tak driv
bylo i v tutorialech. Ty si vsechno pripravujes uz v modelu a do templatu
predavas jen treba pole?
Editoval saimons (11. 2. 2015 13:23)
- Mysteria
- Člen | 797
@saimons: Dělám to stejně, základní data z modelu jako Selection a dodatečná data vybírám až v šabloně pomocí related a ref. Například, články vyberu v modelu, jeho tagy pomocí related v šabloně. Zdá se mi to mnohem pohodlnější než v modelu dělat ohromný pole se všema možnýma dopňujícíma informacema co bych mohl potřebovat a předávat ho šabloně.
- Pavel Kravčík
- Člen | 1196
@Mysteria: Osobně nejhezčí mi přijde řešení pomocí entity (pseudoEntit).
//šablona
$article->id;
$article->title;
$tags = $article->getTags();
foreach($tags as $tag)
{
$tag->title;
}
//entita
public $id;
public $title;
public function getTags()
{
$tags = $this->record->related('tags');
return EntityCollectionTags($tags); //nebo foreachem plnit jiné entity)
}
Pokud dáš ref do šablony a uděláš to na deseti místech. V budoucnu se budeš proklínat, pokud bys třeba rád něco změnil na tom výpisu. Pokud to dáš o úroveň výše, tak to změníš jen někde v modelu a všech deset template se to změní automaticky. To asi @akadlec myslel.
- Pavel Kravčík
- Člen | 1196
@saimons: Nemusíš ani entity. Stačí třeba pole nebo proměnná v templates. Pak stačí tohle:
public function renderEditovat($id)
{
$this->template->article = $model->getArticle($id);
}
Ale tenhle problém, který řešíš teď, může nastat i v budoucnu. Takže si tím ušetříš čas. Můžeš to udělat i „rychleji“. Napiš si nějaký jednoduchý parser a prožeň jím ty šablony a nahraď, co bys nahrazoval ručně.
$sablona = str_replace('$article = $selection->findBy()', '$article', $sablona);
- Mysteria
- Člen | 797
@kzk_cz: Nějak v tomhle nevidím žádný rozdíl:
$article->id;
$article->title;
$tags = $article->getTags(); // vs. $tags = $article->related('tags');
foreach($tags as $tag) {
$tag->title;
}
Respektive vidím v tom případě, že jak píšeš, kdyby to tam bylo Xkrát na různých místech, ale když to tam bude jednou? Prostě tohle mě osobně zavání stylem cpát to úplně nejlepší řešení do jakéhokoliv projektu, přestože to prostě vzhledem k jeho rozsahu a podobně není potřeba, ne?
Samozřejmě se nebavíme o tom psát v šablonách něco jako $article = $selection->findBy(‚…‘), to je jasný, že tohle by tam nemělo co dělat. Bavíme se čistě o related.
- Pavel Kravčík
- Člen | 1196
@Mysteria: Já naopak docela podstatný.
Já vím, že $getTags() mi nevrátí nic nestandartního. U $article->related(‚tags‘) tomu nevěřím. A pokud se změní klíč například, tak abych hledal někde po šablonách, co se kde dělo.
Mysteria napsal(a):
přestože to prostě vzhledem k jeho rozsahu a podobně není potřeba, ne?
Kódu je to v obou případech stejně, jeden řádek. Takže nevím, proč by to mělo být složitější nebo rozsáhlejší. :)
- Pavel Kravčík
- Člen | 1196
@saimons: Mrkni na tohle https://forum.nette.org/…tte-database a tohle http://www.phpguru.cz/…rstev-modelu