Diskuze: MVC jednoduchý redakční systém - dotazy
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Napíšeš to do souboru .htaccess, který sis před chvíli vytvořil. Na
každém řádku je jeden příkaz...
bud do .htaccess, alebo rovno do nastavenia webservera pre danu domenu,
viac informacii sa dozvies na strankach (resp. v dokumentacii) daneho
webservera
webserver umoznuje viac moznosti a nie kazdy webserver berie subor .htaccess
A v čem bych ho měl otevřít? V XAMP? Či? To neni klasickej texťák přeci...nebo php, nebo cokoliv
Je to klasickej texťák, ale Windows to berou jako soubor bezejména (jen
přípona), takže Poznámkový blok, napíšeš, a dáš Uložit jako >
Všechny soubory, název = .htaccess
Mně to z kontextu přijde docela jasné, když to je pod nadpisem .htaccess.
Už mi to došlo, děkuji
Hledám v tom zbytečně moc velkou vědu, to bude zásadní problém.
Ahoj, děkuju moc za skvělý seriál, strašně mě to posunulo dopředu a chtěl bych se zkušenějších zeptat, jestli jsem princip pochopil správně. Snažil jsem se o vypsání Navigace podle uložených článků v databázi a zajímalo by mě jenom, jestli jsem ten princip pochopil správně.
Do modelu jsem zapsal toto:
class NactiMenu {
public function vratMenu()
{
return Db::dotazVsechny('
SELECT `url`, `lang`, `tlacitko`
FROM `clanky`
');
}
}
Do obecného Kontroleru:
public function menu()
{
$nactiMenu = new NactiMenu();
$menu = $nactiMenu->vratMenu();
return $menu;
}
A do Směrovače už jenom naplnění proměnných pro šablonu:
$this->data['menu'] = $this->menu();
Díky za odpověď
Ahoj. Vypadá to, že princip tý architektury jsi zvládl. Akorát bych
lépe pojmenovával. Například model by měl držet metody vracející
podobná data. Například model Articles. Čili model s názvem NactiMenu je
trochu nicneříkající. A ta funkce v kontroleru slouží k čemu? Není
jednodušší vzít data přímo z modelu? Nevím, jestli bys měl něco
takového pevně přidávat do routeru. Lepší by bylo přisun dat do šablon
zautomatizovat, ale špatně to asi není. Jinak snad vcelku pěkný.
Ahoj, díky za reakci a pojmenování vylepším. Jenom se chci zeptat na ten
výpis dat z modelu do pohledu. Myslel jsem že by model neměl o pohledu nic
vědět, proto jsem to řešil takhle...tak nevím myslel jsem že bych vytvořil
kontrolér, jako to mají ostatní aplikace, třeba výpis článků ale do
hlavní šablony vypíšu volaný kontrolér článku a v te samé stránce
potřebuju vložit to menu a kdybych vytvořil třeba menuKontrolér, tak to by
mi nefungovalo, navíc by vznikla chyba při volání, tak jsem to dal do
obecného kontroléru, tak jako jsou třeba messages...tak proto no, nic
lepšího mě nenapadlo, proto jsem se radši zeptal
Myslel jsem spíš, že je blbost vytvářet další metodu, která ti vrací stejný výsledek jako NactiMenu::vratMenu(). Potom je lepší v routeru přímo volat z modelu, nebo jak jsem psal, nechat si to uložit do nějaké speciální proměnné, která by automatizovala přechod dat z kontroleru do šablony.
Jinak teď jsem tě moc nepochopil, máš problém se stejným menu na více stránkách? Jestli ano, pak si stačí jen vytvořit předka pro dané kontrolery, ne? Ten pak bude obsahovat metody obsluhující menu. V šabloně by se to řešilo nějakým importem typu
<?require('menu.phtml');?>
Ještě v tom nejsem tolik sběhlý, učím se to nějak provázat mezi
sebou, aby to aspoň nějak fungovalo a samozřejmě vím, že to není vždycky
úplně ideální řešení. To s tím výpisem menu, jsem to napsal trochu
zmateně, ale nebylo to nic důležitého...spíš by mě zajímalo to s tím
výpisem z modelu. Stačí jen ťuknout, snad to pochopím
Jak máš řešený směrovač? Nebo spíš jak máš řešený přísun dat do šablony? Z toho řádku, co jsi nahoře psal:
$this->data['menu'] = $this->menu();
Vidím, že asi vkládáš do proměnné $data, která je pak přístupná v šabloně? V tom případě bych to udělal asi takto (velmi zjednodušeně):
<?php
namespace Controller;
use Model;
class Controller
{
/**
* @var Model\Menu
*/
private $menuModel;
public function __construct()
{
$this->menuModel = new Model\Menu;
}
public function render()
{
$this->data['menu'] = $this->menuModel->getMenu();
}
// renderování šablony, atp...
// ...
}
Nevím, jak to máš řešený, takže si s tím budeš muset trochu pohrát. Jestli se ti data zpracovávají přímo v předkovi všech kontrolerů, tak se to dá řešit takto. Jinak bych potřeboval více informací.
Zobrazeno 17 zpráv z 17.