Diskuze: Ako riešiť menu vo vlastnom CMS?
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Na order používam niečo takéto v Nette možno ťa to inšpiruje
/**
* Posune záznam dolů v pořadí
* @param int $id
* @param array $where
* @return bool
*/
public function moveDown($id, $where = [])
{
$row = $this->getOne($id);
$where['position'] = $row->position + 1;
$next = $this->getAll()->where($where);
if ($next->count()) {
$next->update([
'position' => new SqlLiteral('position - 1')
]);
$row->update([
'position' => new SqlLiteral('position + 1')
]);
return TRUE;
}
return FALSE;
}
/**
* Posune záznam nahoru v pořadí
* @param int $id
* @param array $where
* @return bool
*/
public function moveUp($id, $where = [])
{
$row = $this->getOne($id);
$where['position'] = $row->position - 1;
$prev = $this->getAll()->where($where);
if ($prev->count()) {
$prev->update([
'position' => new SqlLiteral('position + 1')
]);
$row->update([
'position' => new SqlLiteral('position - 1')
]);
return TRUE;
}
return FALSE;
}
A kde je presne problém v multilevel ? Cyklus v ktorom prebehne ďalší cyklus a selectuješ v závislosti od id prvého cyklusu...
V sorte v podstate mi stačí stále len vymeniť 2 položky. Tú na ktorú klikám aktuálne a vymeniť "position" v mojom prípade "order_number" buď s tou, ktorá je pred, alebo ktorá je za, v závislosti od toho, či kliknem move up, alebo move down. To by mi bolo jasné.
Jasné mi však nie je, čo s orderom v submenu? Tiež klasicky od 1 do iks? A rovnakým štýlom s nimi pohybujem, však?
Multilevel: Cyklus v cykle, to som si aj myslel, to nevidím ako problém. No možno by bolo lepšie, keby mi to už priamo prišlo ako 3D pole, nie?
$menu["prva_polozka"]
$menu["druha_polozka"]
$menu["nadradena_tretia_polozka"]
$menu["nadradena_tretia_polozka"]["prva_polozka_submenu"]
Keby to bolo tak, cyklus by som v pohode zrobil a bolo by všetko tak ako má byť. Lenže ako to vybrať z databázy tak, aby result vyzeral tak ako som uviedol vyššie? Navyše v laraveli?
No sortovanie v submenu by už mohol byť problém aspoň teraz ma nenapadá ako by som to riešil možno by to šlo klasika order podľa int z jednej tabuľky len neviem či by tam nedošlo k nejakému logic-mindfuck neviem vyskúšaj a daj vedieť ale čisto teoreticky by to šlo ako v normálnom menu.
S tým multilevelom ti skrz SQL neporadím ja si to riešim v nette cez komponentu teda taký zložitejší foreach... Cez SQL by to bol asi zbytočný overkill
Možnože aj laravel má nejakú komponentu, určite niekde bude. Lenže jak
dobre poznám laravelovské komponenty, buď nepojdu natiahnuť, alebo budú len
pre starú verziu, alebo nebudú fungovať tak ako potrebujem
https://github.com/…laravel-menu Niečo som tak letmo našiel
Zobrazeno 7 zpráv z 7.