Автор Тема: Нужна помощь новичку по чпу  (Прочитано 1630 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Нужна помощь новичку по чпу
« : Апрель 26, 2016, 16:32:53 »
Добрый день. Только начал изучать ZF, нужна помощь профи.

Дали сайт на ZF1, нужно организовать ЧПУ. Сейчас урлы выглядят вот так:
http://site.com/order/index?from=1&to=2

Нужно, что бы выглядело вот как-то так:
http://site.com/order/system1_to_system2 либо http://site.com/system1_to_system2
(лучше второй вариант), причем фраза "system1_to_system2" задаётся в БД.

Обработкой занимается контроллер в файле application/controllers/OrderController.php,  содержимое:
class OrderController extends Zend_Controller_Action {

    private 
$helper;
    public function 
init() {
        
Application_Model_DbTable_Settings::factory();
        
$this->_helper->contextSwitch->addActionContext('create''json');
    }

    public function 
indexAction() {
// тут обработка страницы
    
}
}

Начал читать документацию по ЧПУ зенда, но пока всё как в тумане. Где прописывать инициализацию маршрутизатора, в index.php или в самом контроллере OrderController? Для работы чпу достаточно этой инициализации, или надо ещё где-то что-то прописывать? В каком месте я должен получить из БД ссылку чпу? Заранее спасибо.

Оффлайн S.Voytovich

  • Литературная
  • Герой
  • *
  • Сообщений: 2992
  • Карма: 135
  • Любитель ZF-кубиков.
Re: Нужна помощь новичку по чпу
« Ответ #1 : Апрель 26, 2016, 23:29:24 »
1) какая версия ЗФа используется сайтом (Zend_Version.php)
2) Если используетс ЗФ 1.8+, то с ЧпУ проблем не должно возникнуть... вопрос именно в перенаправлении старых адресов на новые, а этот вопрос уе решаем (есть тема по удалению из строки адреса куска адреса, содержащего "index.php", на основании чего я и сделал свой обработчик для перевода со старых URL, на новые (ЧПУ).
прежде чем читать документацию по ЧПУ - лучше просмотреть "быстростарт", дабы понять как и что работает. Опять же обратите внимание на версию.
РНР и ZF - это моё хобби, а не основная работа ;o)
Начал играть в кубики от Zend.

ZF-быстростарт

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Re: Нужна помощь новичку по чпу
« Ответ #2 : Апрель 27, 2016, 10:59:04 »
1) какая версия ЗФа используется сайтом (Zend_Version.php)
2) Если используетс ЗФ 1.8+, то с ЧпУ проблем не должно возникнуть... вопрос именно в перенаправлении старых адресов на новые, а этот вопрос уе решаем (есть тема по удалению из строки адреса куска адреса, содержащего "index.php", на основании чего я и сделал свой обработчик для перевода со старых URL, на новые (ЧПУ).
прежде чем читать документацию по ЧПУ - лучше просмотреть "быстростарт", дабы понять как и что работает. Опять же обратите внимание на версию.
1) const VERSION = '1.12.10';
2) какой "быстростарт" смотреть?

Оффлайн S.Voytovich

  • Литературная
  • Герой
  • *
  • Сообщений: 2992
  • Карма: 135
  • Любитель ZF-кубиков.
Re: Нужна помощь новичку по чпу
« Ответ #3 : Апрель 28, 2016, 00:34:22 »
Тогда рекоменду всё же читать про свою версию ЗФа, а не 1.11 - http://framework.zend.com/manual/1.12/ru/learning.quickstart.html

1.11 и 1.12 уже отличаются по контроллерам и ещё по паре мелочей, так как 1.12 - переходная к 2.* версия...
РНР и ZF - это моё хобби, а не основная работа ;o)
Начал играть в кубики от Zend.

ZF-быстростарт

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Re: Нужна помощь новичку по чпу
« Ответ #4 : Апрель 28, 2016, 11:21:41 »
Это да, но в плане ЧПУ они идентичны.

Вот допустим, раздел "Использование маршрутизатора".
Цитировать
Для того, чтобы правильно использовать маршрутизатор, вы должны инстанцировать его, добавить пользовательские маршруты, и внедрить его во фронт-контроллер. Следующий код иллюстрирует эту процедуру:
и дальше код. Куда его писать, в какой файл?

Оффлайн S.Voytovich

  • Литературная
  • Герой
  • *
  • Сообщений: 2992
  • Карма: 135
  • Любитель ZF-кубиков.
Re: Нужна помощь новичку по чпу
« Ответ #5 : Апрель 30, 2016, 23:39:00 »
 ещё раз обращаю внимание на быстростарт...
после все настройки через бутстрап приложения пишутся...
РНР и ZF - это моё хобби, а не основная работа ;o)
Начал играть в кубики от Zend.

ZF-быстростарт

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Re: Нужна помощь новичку по чпу
« Ответ #6 : Май 10, 2016, 13:59:31 »
В бутстрапе дописал:
    protected function _initRoutes()
    {
      
$router Zend_Controller_Front::getInstance()->getRouter();
      include 
APPLICATION_PATH '/configs/routes.php';
    }

в routes.php
$route = new Zend_Controller_Router_Route(
    
'zzz',
    array(
        
'controller' => 'contact',
        
'action'     => 'index'
    
)
);

$router->addRoute('zzz'$route);

Перехожу по адресу http://site/zzz/ но получаю 404... Что неправильно?

Оффлайн S.Voytovich

  • Литературная
  • Герой
  • *
  • Сообщений: 2992
  • Карма: 135
  • Любитель ZF-кубиков.
Re: Нужна помощь новичку по чпу
« Ответ #7 : Май 10, 2016, 20:27:44 »
1) не забудьте вернуть маршрутизатор обратно приложению.
2) включите в настройках виртуального хоста режим development - он покажет более широко параметры ошибки.
3) идеологически верно доставать ресурсы приложения так:
$router $this->getApplication()
            ->
bootstrap('Router')
            ->
getResource('Router');
« Последнее редактирование: Май 10, 2016, 20:38:09 от S.Voytovich »
РНР и ZF - это моё хобби, а не основная работа ;o)
Начал играть в кубики от Zend.

ZF-быстростарт

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Re: Нужна помощь новичку по чпу
« Ответ #8 : Май 13, 2016, 03:54:14 »
Цитировать
1) не забудьте вернуть маршрутизатор обратно приложению.
как, можно увидеть на примере моего кода?

Цитировать
3) идеологически верно доставать ресурсы приложения так:
это вместо
$router Zend_Controller_Front::getInstance()->getRouter();

?

Оффлайн S.Voytovich

  • Литературная
  • Герой
  • *
  • Сообщений: 2992
  • Карма: 135
  • Любитель ZF-кубиков.
Re: Нужна помощь новичку по чпу
« Ответ #9 : Май 14, 2016, 19:00:48 »
1)
    protected function _initRoutes()
    {
      
$router ////
      ///////
      
return $router;
    }

2) да. Но это пример, как могут доставаться ресурсы приложения.
по вариантам ресурсов (и их настройке через файл конфигурации приложения) можно поглядеть тут - http://framework.zend.com/manual/1.11/ru/zend.application.available-resources.html
« Последнее редактирование: Май 14, 2016, 23:58:36 от S.Voytovich »
РНР и ZF - это моё хобби, а не основная работа ;o)
Начал играть в кубики от Zend.

ZF-быстростарт

Оффлайн azzzz

  • Участник форума
  • Сообщений: 6
  • Карма: 0
Re: Нужна помощь новичку по чпу
« Ответ #10 : Май 18, 2016, 16:05:29 »
Большое спасибо! Всё получилось. Очень тяжело поначалу, можно в трёх соснах заблудиться...