Naam voor onderdeel van menu
Ik ben een menu aan het maken dat ongeveer de volgende structuur heeft
Item 1
|- Sub item
|- Sub item
Item 2
Item 3
Item 4
|- Sub item
etc.
Ik ben nu een php klasse aan het maken die een stukje van het menu moet bouwen. Dat stukje is het uitklappende, dus als je Item 1 openklikt, en er verschijnen subitems, dan is dat een aparte duv of ul. Hoe noem ik die <ul> of <div> nou? Het moet een klassenaam zijn voor php. Het is ook nog eens een menu voor een webwinkel, en er zijn meerdere klassen voor verschillende soorten menu's. Ik dacht al aan ShopMenuExpandPanel, ShopMenuSubItemsPanel, of iets dergelijks.
Je bedoelt een menu dat uitklapt? Ik zou niet weten waarom dat een speciale PHP klasse moet zijn, aangezien dat een taak is de front-end niet de back-end, maar dan zal het iets als DropdownMenu worden.
Uhm, als je een menu wilt laten uitklappen, doe je dat met CSS/Javascript, niet met een PHP class toch?
Albert de Wit op 03/01/2014 09:47:36:
Uhm, als je een menu wilt laten uitklappen, doe je dat met CSS/Javascript, niet met een PHP class toch?
Hij zal gewoon bedoelen dat ie een class heeft die de juiste data aanlevert en eventueel de html opbouwt. Niet te moeilijk denken ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
class Navigation {
/**
* @acces protected.
* @var String.
*/
protected $outerClass = 'navigation';
/**
* @acces public.
* @param String $class.
*/
public function setOuterClass($class) {
$this->outerClass = $class;
}
/**
* @acces public.
* @return String.
*/
public function getOuterClass() {
return $this->outerClass();
}
/**
* @acces public.
* @param Array $items.
* @return String.
*/
public function getNavigation($items) {
$navItems = array();
foreach ($items as $key => $item)
$navItem = '<a href="'.$item['url'].'" title="'.$item['title'].'">'.$item['title'].'</a>';
if (count($item['children']) > 0) {
$navItem .= $this->getNavigation($item['children']);
}
$class = '';
if ($key == 1) {
$class .= 'first ';
}
if ($class == count($items) - 1) {
$class .= 'last ';
}
$navItems[] = '<li class="'.trim($class).'">'.$navItem.'</li>';
}
if (count($navItems) > 0) {
return '<ul class="'.trim($this->getOuterClass()).'">'.implode("\n", $navItems).'</ul>';
}
return '';
}
}
?>
class Navigation {
/**
* @acces protected.
* @var String.
*/
protected $outerClass = 'navigation';
/**
* @acces public.
* @param String $class.
*/
public function setOuterClass($class) {
$this->outerClass = $class;
}
/**
* @acces public.
* @return String.
*/
public function getOuterClass() {
return $this->outerClass();
}
/**
* @acces public.
* @param Array $items.
* @return String.
*/
public function getNavigation($items) {
$navItems = array();
foreach ($items as $key => $item)
$navItem = '<a href="'.$item['url'].'" title="'.$item['title'].'">'.$item['title'].'</a>';
if (count($item['children']) > 0) {
$navItem .= $this->getNavigation($item['children']);
}
$class = '';
if ($key == 1) {
$class .= 'first ';
}
if ($class == count($items) - 1) {
$class .= 'last ';
}
$navItems[] = '<li class="'.trim($class).'">'.$navItem.'</li>';
}
if (count($navItems) > 0) {
return '<ul class="'.trim($this->getOuterClass()).'">'.implode("\n", $navItems).'</ul>';
}
return '';
}
}
?>
Code (php)
En met CSS/Javascript kun je bepalen wat voor soort menu het is. Dropdownmenu, etc etc
Gewijzigd op 03/01/2014 10:38:26 door Joakim Broden
Hertog Jan, dat is niet heel erg OO. 1 klasse handelt nu het vasthouden van data en het renderen van een menu. Meer OO zou zoiets zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$nav = new MenuBuilder('root');
$nav
->add(new MenuItem('Home', '/home'))
->add(new MenuItem('PHP Hulp', '/php-hulp'))
->add(new MenuBuilder('Contact')) // returned het submenu
->add(new MenuItem('map', '/contact/map'))
->add(new MenuItem('team', '/contact/team'))
->end() // 1 item terug
->add(new Menu('Google', 'http://google.com/', array('type' => 'external'))
;
$navRenderer = new HtmlMenuRenderer($nav);
$navView = $navRenderer->getView(); // new MenuView
echo $navView; // toont menu
?>
$nav = new MenuBuilder('root');
$nav
->add(new MenuItem('Home', '/home'))
->add(new MenuItem('PHP Hulp', '/php-hulp'))
->add(new MenuBuilder('Contact')) // returned het submenu
->add(new MenuItem('map', '/contact/map'))
->add(new MenuItem('team', '/contact/team'))
->end() // 1 item terug
->add(new Menu('Google', 'http://google.com/', array('type' => 'external'))
;
$navRenderer = new HtmlMenuRenderer($nav);
$navView = $navRenderer->getView(); // new MenuView
echo $navView; // toont menu
?>
Wouter J op 03/01/2014 11:03:42:
Ozzie, nee want hij vraagt specifiek naar hoe dat heet, hij wil geen menu.
Harry hogeveen op 02/01/2014 19:34:11:
Ik ben een menu aan het maken dat ongeveer de volgende structuur heeft
...Ik ben nu een php klasse aan het maken die een stukje van het menu moet bouwen.
...Ik ben nu een php klasse aan het maken die een stukje van het menu moet bouwen.
Albert de Wit op 03/01/2014 09:47:36:
Uhm, als je een menu wilt laten uitklappen, doe je dat met CSS/Javascript, niet met een PHP class toch?
Ozzie PHP op 03/01/2014 09:57:12:
Hij zal gewoon bedoelen dat ie een class heeft die de juiste data aanlevert en eventueel de html opbouwt. Niet te moeilijk denken ;)
Wat bedoel je Wouter?
Harry hogeveen:
die een stukje van het menu moet bouwen. Dat stukje is het uitklappende, dus als je Item 1 openklikt, en er verschijnen subitems, dan is dat een aparte duv of ul. Hoe noem ik die <ul> of <div> nou?
Dat bedoel ik, hij wil niet een menu bouwen maar een stukje van een menu, het uitklappende. En dan vraag ik aan hem wat voor verschil dat in PHP heeft in vergelijking met het normale menu?
Maar jullie komen er wel uit geloof ik.