<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Выпадающее меню из БД
22.03.2013 22:47:20 Выпадающее меню из БД Сообщение #1
ghost_t91aa

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 соответствует числу которое я ставлю.
Вот и как и ее передать? И есть ли какие нибудь замечания или предложения по моему решению?
Профиль Ответить
22.03.2013 22:56:28 Выпадающее меню из БД Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

protected function getListMenu($i) { - вот так и передаётся. Если всё это будет работать, то никаких проблем я тут не вижу.
Профиль Ответить
23.03.2013 05:50:23 Выпадающее меню из БД Сообщение #3
ghost_t91aa

ghost_t91aa

Освоившийся

Освоившийся

Дата регистрации:
15.03.2013 18:46:55

Сообщений: 23

я уже так делал, появлялась ошибка. сейчас в getContent()в $sr["list_menu"] = $this->getListMenu() поставил $i в скобки. ошибка исчезла, но по прежнему ничего не выводится. а конкретно число ставлю, то выводится
Профиль Ответить
23.03.2013 07:12:57 Выпадающее меню из БД Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Покажите текст ошибки.
Профиль Ответить
23.03.2013 10:38:52 Выпадающее меню из БД Сообщение #5
ghost_t91aa

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
Профиль Ответить
23.03.2013 11:44:36 Выпадающее меню из БД Сообщение #6
ghost_t91aa

ghost_t91aa

Освоившийся

Освоившийся

Дата регистрации:
15.03.2013 18:46:55

Сообщений: 23

может здесь нужно как то getListMenu в getMenu вставить?

public function getContent() {
...
$sr["menu"] = $this->getMenu();
$sr["list_menu"] = $this->getListMenu($i);
...
}
Профиль Ответить
23.03.2013 15:03:01 Выпадающее меню из БД Сообщение #7
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Missing argument 1 for Modules::getListMenu() - это означает, что при вызове getListMenu() не был передан параметр.
Профиль Ответить
23.03.2013 15:19:32 Выпадающее меню из БД Сообщение #8
ghost_t91aa

ghost_t91aa

Освоившийся

Освоившийся

Дата регистрации:
15.03.2013 18:46:55

Сообщений: 23

а когда я его здесь вставляю ошибка исчезает, но ничего не работает.
public function getContent() {
...
$sr["menu"] = $this->getMenu();
$sr["list_menu"] = $this->getListMenu($i);
...
}

а также в самой функции поставил.
почему он не передается? как его правильно передать?
Профиль Ответить
23.03.2013 15:20:29 Выпадающее меню из БД Сообщение #9
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Всё правильно Вы передаёте, и он должен передаваться. Смотрите значения переменных: http://myrusakov.ru/php-finderror.html
Профиль Ответить
23.03.2013 16:54:16 Выпадающее меню из БД Сообщение #10
ghost_t91aa

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
Фундамент
Фундамент
Стены
Профиль Ответить