Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: CodeIgniter: название функций в контроллерах

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Нужна помощь
Leviatan
Отправлено: 09 Сентября, 2013 - 13:00:47
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Здравствуйте! Подскажите пожалуйста! Можно ли в контролере, в название функции подставить значение из БД. Спасибо!
 
 Top
caballero
Отправлено: 09 Сентября, 2013 - 13:24:20
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а какое дело компилятору куда эта функция относится к контроллеру или куда то еще


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Leviatan
Отправлено: 09 Сентября, 2013 - 13:28:18
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




caballero пишет:
а какое дело компилятору куда эта функция относится к контроллеру или куда то еще

Даже не знаю что ответить.
Я наверное из тех случаев когда только вникаю в самые азы PHP и CodeIgniter.
Пока все мои попытки как то это сделать ничем не увенчались. Мне хоть малейший пример. Спасибо!
 
 Top
LIME
Отправлено: 09 Сентября, 2013 - 13:32:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ну ты покажи попытку...проще будет на ошибки указать
 
 Top
Ch_chov
Отправлено: 09 Сентября, 2013 - 13:33:48
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Leviatan пишет:
Пока все мои попытки как то это сделать ничем не увенчались.

Если не можете объяснить что вам нужно на словах. То покажите хотя бы свой код. Может быть кто нибудь вас поймет.
 
 Top
Leviatan
Отправлено: 09 Сентября, 2013 - 14:01:27
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




LIME пишет:
ну ты покажи попытку...проще будет на ошибки указать

к примеру есть контроллер test. Во второй функции мне надо поставить значение из БД. Вот один из примеров как я пытаюсь это делать:


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     $this->db->where('url','test');
  3.     $query = $this->db->get('category');
  4.     return $query->result_array();
  5.     foreach($category as $item){
  6.  
  7.    
  8.    
  9.  
  10.    
  11. class Test extends CI_Controller {
  12.  
  13.         function index()
  14.         {
  15.             echo 'test';
  16.         }
  17.         function $item['url']()
  18.         {
  19.             echo 'Тестроване';
  20.         }
  21.  
  22. }
  23.     }
  24. ?>

Прошу не судить строго. PHP учу 2 недели а в CodeIgniter вникаю только пару дней. Буду благодарен за любую помощь

(Отредактировано автором: 09 Сентября, 2013 - 14:14:15)

 
 Top
LIME
Отправлено: 09 Сентября, 2013 - 14:08:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




о м г
 
 Top
Bio man
Отправлено: 09 Сентября, 2013 - 14:10:10
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Так не получится. Либо создавай параметризованый общий метод, где будешь принимать $item['url'] (в настройках маршрутов нужно будет прописать соответствующее правило), либо пользуйся волшебным методом __call.
(Добавление)
либо для каждого uri создавай отдельное действие
 
 Top
Leviatan
Отправлено: 09 Сентября, 2013 - 14:13:04
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Bio man пишет:
Либо создавай параметризованый общий метод

Не понял ??? Непонял!
Bio man пишет:
либо пользуйся волшебным методом __call

А есть примеры использования?
 
 Top
Bio man
Отправлено: 09 Сентября, 2013 - 14:18:54
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Leviatan пишет:
А есть примеры использования?
http://www.php.net/manual/ru/lan....php#object.call
Leviatan пишет:
Не понял ??? Непонял!

не помню как в там в CI, но точно можно создать один метод (действие) и настроить маршрут так, что бы этому действию передавался параметр из адресной строки.
 
 Top
Leviatan
Отправлено: 09 Сентября, 2013 - 14:33:34
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Bio man пишет:
Leviatan пишет:
А есть примеры использования?
http://www.php.net/manual/ru/lan....php#object.call
Leviatan пишет:
Не понял ??? Непонял!

не помню как в там в CI, но точно можно создать один метод (действие) и настроить маршрут так, что бы этому действию передавался параметр из адресной строки.


Может я не правильно копаю. Вообще мне нужно сделать возможность из админки сайта генерировать новые страницы сайта по шаблону. И т.к. название функции в контролере это же и ее УРЛ адрес в браузере, то возникла мысль чтобы это название было динамическим а не статическим. То есть справа у меня было просто
PHP:
скопировать код в буфер обмена
  1.  function tester()
  2.         {
  3.             echo 'Тестирование';
  4.         }

и страница по адресу site.ru/test/tester работала. А теперь надо сделать чтобы вместо tester подтягивалось каждый раз свое название которое предопределено в БД.
 
 Top
Bio man
Отправлено: 09 Сентября, 2013 - 14:38:11
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




сделай tester параметром и в действии test применяй его.
(Добавление)
http://code-igniter[dot]ru/user_guid[dot][dot][dot][dot]html#passinguri
 
 Top
Мелкий Супермодератор
Отправлено: 09 Сентября, 2013 - 14:41:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Leviatan пишет:
А теперь надо сделать чтобы вместо tester подтягивалось каждый раз свое название которое предопределено в БД.

Решение задачи лежит в обратной постановке задачи:
Нужно чтобы запросы передавались одному определённому экшену, а тот уже будет лезть в базу и проверять, существует ли такое.

С CI дел не имел, но скорей всего вопрос к правилам роутинга.
По ссылке выше раздел "Переадресация вызова функции", как вариант.

Bio man пишет:
либо пользуйся волшебным методом __call.

Маленький нюанс. method_exists не проверяет __call. А в вызов метода без проверки существования оного в CI - я как-то не поверю.


-----
PostgreSQL DBA
 
 Top
Leviatan
Отправлено: 09 Сентября, 2013 - 14:53:29
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Сент. 2013  


Помог: 0 раз(а)




Bio man пишет:
сделай tester параметром и в действии test применяй его.
(Добавление)
http://code-igniter.ru/user_guide/general/controllers.html#passinguri


Обана. Вот это попробую применить. Спасибо! Круто
(Добавление)
Мелкий пишет:
Маленький нюанс. method_exists не проверяет __call. А в вызов метода без проверки существования оного в CI - я как-то не поверю.

Я правда мало что понял. Но спасибо! Возможно со временем буду более развит в этой теме)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB