ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
Делаю меню в движке из уроков по PHP. И возник такой вопрос: как из одной функции передать значение переменной в другую?
А именно: я добавил метод getListMenu, и именно в него нужно передать переменную i.
protected function getMenu() {
$menu = $this->menu->getAll();
for ($i = 0; $i < count($menu); $i++) {
$sr["title"] = $menu[$i]["title"];
$sr["link"] = $menu[$i]["link"];
$text .= $this->getReplaceTemplate($sr, "menu_item"
$list_menu = $this->getListMenu($i);
}
return $text;
}
protected function getListMenu() {
$list_menu = $this->list_menu->getAllOnField("menu_id", $i);
for ($j = 0; $j <count($list_menu); $j++) {
$sr["title"] = $list_menu[$j]["title"];
$sr["link"] = $list_menu[$j]["link"];
$text .= $this->getReplaceTemplate($sr, "menu_list"
}
return $text;
}
Если вместо i подставлю число, то все работает, но соответственно у каждого пункта меню выпадает список с пунктами которые должны быть только у пункта меню у которого id соответствует числу которое я ставлю.
Вот и как и ее передать? И есть ли какие нибудь замечания или предложения по моему решению?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
protected function getListMenu($i) { - вот так и передаётся. Если всё это будет работать, то никаких проблем я тут не вижу.
ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
я уже так делал, появлялась ошибка. сейчас в getContent()в $sr["list_menu"] = $this->getListMenu() поставил $i в скобки. ошибка исчезла, но по прежнему ничего не выводится. а конкретно число ставлю, то выводится
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Покажите текст ошибки.
ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
Warning: Missing argument 1 for Modules::getListMenu(), called in Z:\home\projectrem\www\lib\modules_class.php on line 50 and defined in Z:\home\projectrem\www\lib\modules_class.php on line 74
ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
может здесь нужно как то getListMenu в getMenu вставить?
public function getContent() {
...
$sr["menu"] = $this->getMenu();
$sr["list_menu"] = $this->getListMenu($i);
...
}
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Missing argument 1 for Modules::getListMenu() - это означает, что при вызове getListMenu() не был передан параметр.
ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
а когда я его здесь вставляю ошибка исчезает, но ничего не работает.
public function getContent() {
...
$sr["menu"] = $this->getMenu();
$sr["list_menu"] = $this->getListMenu($i);
...
}
а также в самой функции поставил.
почему он не передается? как его правильно передать?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Всё правильно Вы передаёте, и он должен передаваться. Смотрите значения переменных: http://myrusakov.ru/php-finderror.html
ghost_t91aa
Освоившийся
Дата регистрации:
15.03.2013 18:46:55
Сообщений: 23
в общем переменная передается нормально, это что то с функцией. Например эта функция
protected function getMenu() {
$menu = $this->menu->getAll();
for ($i = 0; $i < count($menu); $i++) {
$sr["title"] = $menu[$i]["title"];
$sr["link"] = $menu[$i]["link"];
$text .= $this->getReplaceTemplate($sr, "menu_item"
print_r($text);
$list_menu = $this->getListMenu($menu[$i]["id"]);
}
return $text;
}
выводит вот что:
Главная
%list_menu%
Главная
%list_menu%
Квартира
%list_menu%
Главная
%list_menu%
Квартира
%list_menu%
Дома и коттеджи
%list_menu%
должно же без повторений быть. вторая функция также выполняется. все формируется но выводится через getReplaceTemplate.
protected function getListMenu($i) {
$list_menu = $this->list_menu->getAll();
echo $i;
for ($j = 0; $j < count($list_menu); $j++) {
if ($list_menu[$j]["menu_id"] == $i) {
$sr["title"] = $list_menu[$j]["title"];
$sr["link"] = $list_menu[$j]["link"];
$text .= $this->getReplaceTemplate($sr, "menu_list"
echo $text;
}
}
return $text;
}
а вот что получается:
12
Пол
Пол
Стены
Пол
Стены
Потолок
3
Фундамент
Фундамент
Стены