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 :: Вопрос по ЧПУ

 PHP.SU

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


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

> Без описания
openlsd
Отправлено: 09 Ноября, 2018 - 09:14:50
Post Id


Новичок


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


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




Сделал себе подобие MVC на сайте

CODE (text):
скопировать код в буфер обмена
  1.  
  2. RewriteEngine on
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5. RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
  6.  


То есть по запросу /users/ я буду подключать users.php, но я не совсем понимаю как работать с параметрами вида:
/users/page/1/action/test/

Как принято такие параметры добавлять и извлекать чтобы все нормально работало? Не хочу изобретать новый велосипед Улыбка
 
 Top
andrewkard
Отправлено: 09 Ноября, 2018 - 09:28:21
Post Id


Участник


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


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




Вот например, из YII:
PHP:
скопировать код в буфер обмена
  1.  
  2. '<controller:\w+>/<id:\d+>' => '<controller>/view',
  3. '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
  4. '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
  5.  


users/1 - это вызов метода view контроллера users с гет параметром id = 1

users/delete/1 - это вызов метода delete контроллера users с гет параметром id = 1

users/index - аналогично
 
 Top
openlsd
Отправлено: 09 Ноября, 2018 - 09:30:00
Post Id


Новичок


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


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




andrewkard пишет:

users/1 - это вызов метода view контроллера users с гет параметром id = 1

users/delete/1 - это вызов метода delete контроллера users с гет параметром id = 1

users/index - аналогично


А если таких параметров много будет? Как в моем примере. Как вообще правильно их извлекать, ну и добавлять в ссылки?
 
 Top
andrewkard
Отправлено: 09 Ноября, 2018 - 09:46:58
Post Id


Участник


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


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




openlsd пишет:
А если таких параметров много будет?

обычно их не много, если у Вас не так, пересмотрите структуру
явно что то в этом со запросе не так

/users/page/1/action/test/

а

/users/test/?p=1

вроде как получше и смысл тот же
 
 Top
openlsd
Отправлено: 09 Ноября, 2018 - 10:15:04
Post Id


Новичок


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


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




Ну хорошо. Вот у меня есть страница /users/ которая показывает список пользователей, а /users/page/5 5-ю страницу с пользователями. /users/add/ должна показывать форму. Мне нужно какой-то псевдороутер же написать чтобы правильные страницы инклудились? Как он примерно будет выглядеть.
 
 Top
andrewkard
Отправлено: 09 Ноября, 2018 - 12:39:45
Post Id


Участник


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


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




Упрощенно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $controller = 'users';
  3. $action = 'index';
  4.  
  5. $parts = explode('/',$_SERVER["REQUEST_URI"]);
  6.  
  7. if(isset($parts[1])){
  8.     $controller = $parts[1];
  9. }
  10.  
  11. if(isset($parts[2])){
  12.     $action = $parts[2];
  13. }
  14.  
  15. if(class_exists($controller)){
  16.     $controller = new $controller;
  17. }
  18.  
  19. if(method_exists($controller,$action)){
  20.     return $controller->{$action};
  21. }
  22.  
 
 Top
openlsd
Отправлено: 09 Ноября, 2018 - 15:57:00
Post Id


Новичок


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


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB