vytvorenie sranky cez web
- domeskys
- Člen | 7
Dobrý deň. Urobil som si formulár, kde si uživatel môže vytvoriť
vlastnú stránku.
Po odoslani formuláru, sa vygeneruje toto
$router[] = new Route('sem idu udaje s formularu/aj sem', 'vlastnestranky:view');
No viete mi poradiť, ako môžem spraviť to, aby to zapísalo to hore, do
routingfactory?
Skúšal som to, ale vždy to zapíše nas podok:
<?php
namespace App;
use Nette;
use Nette\Application\Routers\Route;
use Nette\Application\Routers\RouteList;
class RouterFactory
{
use Nette\StaticClass;
/**
* @return Nette\Application\IRouter
*/
public static function createRouter()
{
$router = new RouteList;
$router[] = new Route('<presenter>/<action>', 'Homepage:default');
return $router;
}
}
$router[] = new Route('sem idu udaje s formularu/aj sem', 'vlastnestranky:view');
a ja potrebujem aby to zapísalo do funkcie createRouter.
(chcem to takýmto spôsobom).
Viem, môžem urobiť napr. vlastný router, ale chcem to mať v tomto.
Napadlo ma to aj tak, že urobím že vo formulári, si môže zvoliť
kategóriu, ktorá bude už urobená:
//toto je v routerFactory
$router[] = new Route('yeee/uzivatelovastranka', 'yeee:view');
$router[] = new Route('gaming/uzivatelovastranka', 'gaming:view');
stým, že uživatelova stránka sa bude čítať s MySQL. (Respektíve, sa nebude nič písať do súborov, ale iba do MySQL). ale takto to nechcem, chcem aby si to mohol urobiť sám.
Editoval domeskys (1. 11. 2017 16:38)
- Mysteria
- Člen | 797
Takže tvoje otázka je spíš, jak zapsat obecně něco na konkrétní
pozici do souboru. Tak třeba můžeš načíst obsah souboru, vyhledat si
pozici něčeho známého, takže v tvým případě třeba
return $router;
, který bude vždy poslední a vložit to
před něj.
Ale jak píše CZechBoY určitě by šlo najít i lepší řešení než tohle.
- chemix
- Nette Core | 1310
Ahoj
1/ pokud chces generovat php soubory urcite koukni na https://github.com/…er/readme.md je tim generovan DI kontajner v Nette
2/ urcite ale timto stylem nechces resit routovani nette aplikace
- Tyraxor
- Člen | 31
Myslím že zápasí se zapsáním routeru. Napadají mě dvě možnosti.
1. vymyslet nějakou obecnou strukturu masky aby to nekolidovalo s ostatníma routama, pak ti bude stačit jen jedna statická routa, nebudeš muset nic generovat, a v presenteru si načteš stránku podle slagu. Např:
$router[] = new Route('<category>/<slug>', 'vlastnestranky:view');
2. do RouterFactory vyžádat nějakou Repository nebo přístup do databáze, načteš si všechny ty stránky a v cyklu si pro každou stránku vygenerujes konkrétní routu
foreach($stranky as $stranka) {
$router[] = new Route($stranka->slug1.'/'.$stranka->slug2, array(
'presenter' => 'vlastnestranky',
'action' => 'view',
'id' => $stranka->id,
));
}
ta druhá možnost se mi moc nelíbí, ale jestli se ti nepovede udělat tu obecnou routu tak ti asi nic jiného nezbude
Editoval Tyraxor (3. 11. 2017 9:04)