2009/4/29 水曜日

ZendFramework 大文字小文字

カテゴリー: Zend Framework — hot @ 11:52:04

ZendFrameworkのコア部分をいじったので覚書。

Zend/Controller/Dispatcher/Standard.php

367行目あたり
$className = $this->formatControllerName($controllerName);

アクセスするコントローラー名をフォーマットしてるんだけど、これがLinux系のサーバでは厄介な事に・・・・
例えば
/UserList/
見たいにアクセスしたとすると
UserlistController.php
と先頭文字だけ大文字にして後は小文字に書き換えられてしまう。結果、作成したUserListController.phpはリナックス上だと別ファイルと認識される。余計な事をしていると思うんだけどな・・・・

で上のソースを以下の様に修正

$className = ucfirst($controllerName) . ‘Controller’;

これでUserListをそのままでコントローラーに渡してくれる
無理やりだけど・・・

2008/6/17 火曜日

Zend Framework – ルーティング処理

カテゴリー: Zend Framework — hot @ 13:10:05

Zend Frameworkでルーティング処理を行う場合の覚書

以下のように
$ctrl->addControllerDirectory(BASE_DIR.’application/backoffice/controllers’,'backoffice’);
でbackofficeモジュールを追加してあげた場合、ルーティング追加時にちゃんと
‘module’ => ‘backoffice’,
を指定してあげないと上手く動作しない。

デフォルトのshopではいらない為、少しハマッた。
参考書には意外とこのような重要な所が抜けていることがありますね。
まーちゃんと、リファレンスガイドを読みましょうと言うことです。
http://framework.zend.com/manual/ja/index.html

以下サンプルソース

$ctrl = Zend_Controller_Front::getInstance();
$router = $ctrl->getRouter();

$router->addRoute(‘backoffice/list’,
new Zend_Controller_Router_Route(‘backoffice/list/:p’,
array(
‘module’ => ‘backoffice’,
‘controller’ => ‘list’,
‘action’ => ‘index’,
‘p’ => 1)));

$ctrl->setParam(‘noViewRenderer’,true);

$ctrl->setDefaultModule(’shop’);
$ctrl->setControllerDirectory(BASE_DIR.’application/shop/controllers’);
$ctrl->addControllerDirectory(BASE_DIR.’application/backoffice/controllers’,'backoffice’);

2007/11/22 木曜日

ZF Validatorバグ

カテゴリー: Zend Framework — hot @ 23:03:02

ZendFrameworkを色々試している今日この頃ですが、どうやらまだバグらしきものがある。
Zend_Validate_Alnum(英数字のみで構成されているときTrueをかえす)を使ってみるとどうも日本語をちゃんと処理してくれない。調べると中で使われているZend_Filter_Alnumがちゃんと機能していないとのこと。

Zend/Filter/Alnum.phpの82行目を修正

//$pattern = ‘/[^\p{L}\p{N}' . $whiteSpace . ']/u’;
$pattern = ‘/[^\p{Ll}\p{Lu}\p{N}' . $whiteSpace . ']/u’;

これでちゃんと日本語が含まれているときにエラーを返してくれるようになった。きっと他にもバグがあるのだろうけど随時バージョンアップで修正してくれるだろうと期待。

2007/11/19 月曜日

ZF デフォルトモジュール

カテゴリー: Zend Framework — hot @ 23:55:34

Zend Frameworkで、コントローラー、モデル、ビューをまとめてモジュールとすることが出来るのだけど、そのデフォルトはdefaultとなっている。これをshopモジュールとmasterモジュールで構成しshopモジュールをデフォルトに設定してみた。

index.phpを以下のように設定

< ?php
// コンポーネントをロードする
require_once 'Zend/Controller/Front.php';

$ctrl = Zend_Controller_Front::getInstance();
$ctrl->setParam(‘noViewRenderer’,true);

$ctrl->setDefaultModule(’shop’); // デフォルトモジュールをshopに設定
$ctrl->setControllerDirectory(‘../application/shop/controllers’);
$ctrl->addControllerDirectory(‘../application/master/controllers’,'master’);

$ctrl->dispatch();

あとはshop,masterにそれぞれコントローラー、モデル、ビューを作成していく。

この時注意しなければいけないのが、モジュールを作成する場合、通常コントロールのクラス名は以下のようになるが

class モジュール名_IndexController extends Zend_Controller_Action{}

shopモジュールはデフォルトに設定したのでクラス名にモジュール名は必要ない。

2007/11/6 火曜日

Zend Framework – mod_rewrite

カテゴリー: PHP, Zend Framework — hot @ 0:15:00

Zend Frameworkをローカル環境でテストする時の設定の覚書。mod_rewriteで少しハマった。。。

Zend FrameworkはPHP5.1.4以上が必要なのでXAMPPのPHP SwitchでPHP5にする。ちなみに小生の環境はPHP5.2.0です。開発はEclipsでやるのでhttpd.confの設定でEclipsのワークスペースに合わせる。それからmod_rewriteを有効に。

LoadModule rewrite_module modules/mod_rewrite.so

Alias /zend “C:/D/Eclipse/zend/public_html/”
<directory “C:/D/Eclipse/zend/public_html/”>
Options All
AllowOverride all
Order allow,deny
Allow from all
</Directory>

ここでOptions Allにしないと.htaccessでmod_rewriteの設定した時に、アクセス拒否されてしまったので注意。
次に.htaccessの設定

RewriteEngine On
RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
RewriteBase /zend

DirectoryIndex index.php

RewriteBaseはhttpd.confで設定したドキュメントルートのエイリアス「zend」を設定

次ページへ »

Copyright (C) 2007-2010 HOTSYSTEMS