vytvorenie sranky cez web

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

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)

CZechBoY
Člen | 3608
+
+1
-

Co to bude typove za stranky? jen html/markdown? Pak ti staci v tom VlastneStranky presenteru vytahnout stranku podle slug a vykreslit.

domeskys
Člen | 7
+
0
-

asi si ma nepochopil, ja potrebujem spraviť aby sa toto zapísalo do router factory, do createRoute funkcie.

$router[] = new Route('sem idu udaje s formularu/aj sem', 'vlastnestranky:view');
Mysteria
Člen | 797
+
+1
-

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.

domeskys
Člen | 7
+
0
-

Ano mysteria, presne tak ako si napísal. Nevieš mi prosím poradiť ako to môžem spraviť? :)

Rob Bob
Člen | 60
+
0
-

Ale proč? Toto je špatné řešení, pokud chceš aby ty uživatelské stránky měly vlastní URL, jde to udělat i jinak

chemix
Nette Core | 1310
+
+1
-

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

domeskys
Člen | 7
+
0
-

A viete mi teda poradiť iný a lepší spôsob? Ďakujem vo pred .)

chemix
Nette Core | 1310
+
0
-

Urcite poradit umime :-) jen teda ja presne nechapu ceho chces docilit?

Tyraxor
Člen | 31
+
0
-

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)

GEpic
Člen | 566
+
0
-

Určitě bych šel cestou jako navrhl @Tyraxor, neumím si představit router se stovkami / tisíci rout.

Editoval GEpic (3. 11. 2017 12:33)