Comments on: Zend Framework: Router for subdirectory-based site https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/ In my blog I'll try to describe about interesting technologies, my discovery in IT and some useful things about programming. Mon, 07 Sep 2015 23:32:24 +0000 hourly 1 https://wordpress.org/?v=6.7.1 By: » Zend Web Design Framework SharpProgrammer.Com https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-108200 Wed, 10 Oct 2007 16:08:53 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-108200 […] Zend Framework: Router for subdirectory-based site || Dmytro Shteflyuk’s Home – I’ve had problems with Zend Framework: Router for subdirectory-based site || Dmytro Shteflyuk’s Home […]

]]>
By: Kevin Campion https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-130 Tue, 18 Apr 2006 23:27:20 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-130 I have just tested the Zend Framework, and I was confronted with the same problem (subdomain).
I found your explanation after some research. But with version 0.1.2 of Zend Framework, it doesn’t work.

There are the changes which I carried out for work :

At the beginning I used this tutorial to have a little application for testing : http://phparch.com/zftut/index.php?p=0

My structure look like this:

1
2
3
4
DOCUMENT ROOT >         /www
My First Application >      /www/project1
Zend Framework Library >    /www/zend/ZendFramework-0.1.2/library
(php.ini contains include_path = ".:/www/zend/ZendFramework-0.1.2/library")

I wished to check my application by http://example.org/project1/

1
2
3
4
5
6
7
/www/project1/.htaccess :
    RewriteEngine on
    RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

/www/project1/app/controllers/IndexController.php

/www/project1/app/views/index.php

/www/project1/index.php :

1
2
3
4
5
6
7
8
9
10
setScriptPath('./app/views');
Zend::register('view', $view);

$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('./app/controllers');
 
$router = new SubDirectoryRouter();
$controller->setRouter($router);
 
$controller->dispatch();

When i check “http://localhost/project1/” I’ve got this error :

1
Fatal error: Class 'Zend_Controller_Dispatcher_Action' not found in  /www/zend/ZendFramework-0.1.2/library/SubDirectoryRouter.php on line 73

It is cause of: $actionObj = new Zend_Controller_Dispatcher_Action($controller, $action, $params);
Replace it by $actionObj = new Zend_Controller_Dispatcher_Token($controller, $action, $params);
and in top of the file SubDirectoryRouter.php move require_once 'Zend/Controller/Dispatcher/Interface.php';
to require_once 'Zend/Controller/Dispatcher/Token.php';

In Zend Framework 0.1.2 it’s the right way (cf /www/zend/ZendFramework-0.1.2/library/Zend/Controller/Router.php)

When i recheck “http://localhost/project1/” it work.

D’ont forget to change in all views :
by
or
escape($entry[‘id’]); ?>”> by escape($entry[‘id’]); ?>”>

]]>
By: Древлянин https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-89 Wed, 05 Apr 2006 09:56:56 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-89 Приглашаю к русскоязычному обсуждению Zend Framework в этой конференции: http://groups.google.ru/group/ru-zend-framework

]]>
By: Kpumuk https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-66 Fri, 17 Mar 2006 14:21:00 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-66 К сожалению, никаких средств ORM в ZF не будет (по заявлениям разработчиков). Фреймворк преследует несколько целей, включая отсутствие необходимости в файлах конфигурации (configuration-less), простота, эффективность. Propel же не только требует настроить, что весьма и весьма нетривиально, но и вводит еще один этап – генерацию классов (хотя, надо признать, довольно удобно получается :-) ). В общем именно такая тема поднималась в списках рассылки, и разработчики сказали свое веское “нет”. Посмотрим, если будет желание, попробую их как-нибудь красивенько увязать :-) (но обещать ничего не буду за неимением достаточного количества свободного времени).

]]>
By: Михаил https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-65 Fri, 17 Mar 2006 14:05:29 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-65 Спасибо, Дмитро!
Я просто сам только “въезжаю” во фремворки.. Пытался осилить Symfony — не получилось, CakePHP — попроще, тем не менее, все говорят, что время на их изучение для создания рабочего приложения (а не просто blabla.php) нужно отсчитывать в месяцах. Почитал обзор ZF и заинтересовался очень, поскольку спустя 2 часа могу что-то изобразить тогда как с Ruby-oriented type of frameworks приходится делать слишком много операций, что только осложняет работу. Хотя скорее всего все от того, что у меня просто нет много времени для их изучения. Порой даже кажется, что надо сперва изучить структуру ROR, чтоб потом что-то написать с помощью Symfony/Cake :)))))
Чего вот очень хотелось бы, тем не менее, в ZF, так это поддержку ORM, т.е. чего-то вроде Propel, но желательно еще проще. :))

Случайно совсем наткнулся на ваш сайт, так что теперича буду следить.. ;)

С уважением,
Михаил

]]>
By: Kpumuk https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-63 Fri, 17 Mar 2006 13:11:00 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-63 Здравствуйте, Михаил

Во-первых, Вам нужно создать собственный роутер, поскольку стандартный предназначен для передачи параметров в виде:
http://host/controller/action/param1/value1/param2/value2/

Вы можете скопировать код стандартного роутера, и на его основе создать свой, изменив следующие строки:

Обработка запроса:

1
2
3
4
5
6
7
8
9
//...
    $controller = $path[0];
    $action     = isset($path[1]) ? $path[1] : null;
 
    if (!strlen($controller)) {
      $controller = 'index';
      $action = 'index';
    }
//...

на

1
2
3
4
//...
    $controller = $path[0];
    $action = 'index';
//...

Обработка параметров:

1
2
3
4
5
6
//...
    $params = array();
    for ($i=2; $i<sizeof($path); $i=$i+2) {
      $params[$path[$i]] = isset($path[$i+1]) ? $path[$i+1] : null;
    }
//...

на что-то вроде

1
2
3
4
5
6
//...
    $params = array();
    for ($i=1; $i<sizeof($path); $i++) {
      $params[] = $path[$i];
    }
//...

Теперь осталось просто определить NewsController с методом index().

На следующей неделе я собираюсь написать пример использования Zend Framework, где будет использоваться подобная техника.

]]>
By: Михаил https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-62 Fri, 17 Mar 2006 11:30:45 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-62 Приветствую, Дмитро!

Спасибо за весьма интересные исследования!
Меня, вот, интересует, как в ZF реализовать ЧПУ вроде: http://host/news/2006/01/01/this-is-a-cool-article-title/ ?

Заранее спасибо!
С уважением,
Михаил

]]>
By: 番茄鸡蛋炒米 » Zend Framework体验 初识 https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-61 Fri, 17 Mar 2006 06:59:26 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-61 […] http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/ […]

]]>
By: Kpumuk https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-32 Thu, 09 Mar 2006 14:42:26 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-32 As I understood from mailing list, default router allready patched and will be available in next release (0.1.3).

Dinh:

I patched Router.php in ZF with your code:

1
2
3
4
5
6
7
8
9
10
/**
 * @todo Replace with Zend_Request object
 */

//$path = $_SERVER['REQUEST_URI'];

// add

// what's the path to where we are?
$appRoutePath = dirname($_SERVER['SCRIPT_NAME']);        
$path = str_replace($appRoutePath, '', $_SERVER['REQUEST_URI']);

It works like a charm.

]]>
By: Kpumuk https://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/comment-page-1/#comment-31 Thu, 09 Mar 2006 08:26:30 +0000 http://kpumuk.info/php/zend-framework-router-for-subdirectory-based-site/#comment-31 Thanks, Mike. I will look at new version. I think it’s too early to use it in real projects, but idea is great. This framework can become one of the most popular thing in PHP world.

Rob, no comments :-) My code looks too similar with your one. Maybe it’s really great problem for people who started working with this framework.

]]>