トップページ⇒php
1001コメント290KB

ZendFrameworkってどうよ?

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/07(土) 02:49:15ID:6wQ8r0Dc
ようやくVer.1.0が出るらしいね
これってどうよ?

PHP5に移行したほうがいいのかな
0111nobodyさん2007/03/02(金) 14:03:35ID:???
DBは何を使ってる?MySQL?
DB接続時にユーザ名指定してる?
0112nobodyさん2007/03/02(金) 20:31:47ID:MGhMK5UU
>>111
レスありがとうございます

DBはpostgreSQLです。
$params = array(
    'host' => 'localhost',
    'username' => 'hoge',
    'dbname' => 'hogedb'
);
$db = Zend_Db::factory('PDO_PGSQL', $params);

$sql = $db->quoteInto( 'SELECT* FROM t_zip_code WHERE address like ? ' , '%東京%' );
echo $sql;

この時点で実行してエラーが出ます。
実際クエリーは発行していません。SQLを取得しただけです。

httpd.confの
User apache
Group apache
を
User hoge
Group hoge
にしたらエラーもなく、SQLも無事取得できました。
0113nobodyさん2007/03/02(金) 22:29:09ID:???
>>112
$params = array(
'host' => 'localhost',
'username' => 'hoge',
'password' => '',
'dbname' => 'hogedb'
);
みたくパスワードもちゃんと空のパラメータにしてみて
あと、試しにfactory直後でクォートせず何かクエリ投げてみて、
同じようにroleがないみたいな例外が返って来るなら
多分DB接続がうまくいってなくて
PDOはクォートする時もコネクション使うからそこでこけてると思うんだ
01141122007/03/02(金) 22:32:52ID:AEjNDMWg
コードながめて、おかしなところを見つけたんですけど。

Zend/Db/Adapter/Pdo/Apstract.phpの85行目付近のDBに接続するところ

$this->_connection = new PDO(
$this->_dsn(),
$this->_config['username'],
$this->_config['password']
);

PDOで繋ぐときのDNSの設定がカンマで区切られていて
しかも $this->_config['username'] を覗いたら、user= も無かったので
カンマをドットに変えて下のようにしたら動きました。

$this->_connection = new PDO(
$this->_dsn().
' user='.$this->_config['username'].
$this->_config['password']
);

でも、これって、PDOでいろんなDBに接続するクラスのスーパークラスですよね?
こんなコアなところにバグあったら、みんな気づきますよね?
なんか勘違いというか、設定ミス的なことを私がやらかしてるのでしょうか?

ちなみに使ってるのはPreview 0.8.0です。
0115nobodyさん2007/03/02(金) 22:45:15ID:???
>>114
PDOのコンストラクタの引数は
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
こんな感じ
そこのコードは特に間違ってはいない

んで引数の指定がなかった場合なんだが、
おそらくDB側はUNIX自体のユーザ名・パスワード
をDBのユーザ・パスワードと仮定して扱うと思うから
ちょうど今君はapacheのユーザ・パスワードを合わせてしまっているから
たまたま接続がうまくいってるとかそんな気がする
01161142007/03/03(土) 01:47:36ID:fjJSaYh6
>>115
確かにPDOのマニュアルにはその書き方が出てるんですけど
(うちの)postgresqlにはその書き方ではつながりません。
それだと>>110と同じエラーが出ます。

ttp://www.php.net/manual/ja/ref.pdo-pgsql.connection.php
PDOのマニュアルを見ても
pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass
と表記するように出てると思うんですけど・・・
違うとこ見てますか?^^;


う〜ん、でもおかしいですね。
もしかしてpostgresqlの人、>>115の書き方でつながってるんでしょうか?
サーバーとかDBの設定の問題でしょうか?

ちなみに、apacheとDBのユーザとパスは同じではありません。
どちらかというと、同じにすると動くと言う感じです。

ちなみにPHP5.2.1を使っています。
01171162007/03/03(土) 02:45:02ID:???
いろいろ実験してみたけど
うちの環境ではやっぱり
new PDO('pgsql:host=localhost;dbname=test', $user, $pass);
ではなく
new PDO('pgsql:host=localhost dbname=test user=user password=pass');
じゃないとつなげないっぽいですね。

ZendFrameworkと関係なさそうなのでPHP版の方へ行ってみます

ありがとうございました。
0118nobodyさん2007/03/03(土) 05:32:34ID:???
>>114
> PDOで繋ぐときのDNSの設定がカンマで区切られていて
カンマ区切りは関数のパラメータの区切りであってDSNの区切りじゃないだろ;;

>>116
> PDOのマニュアルを見ても
マニュアル上ではuserとpasswordはDSN文字列で指定する他に
第二引数、第三引数で指定する方法もある。
パラメータの優先は第一引数のDSN側なんだが、
ZendFrameworkのPDOインスタンス時には
unset($dsn['username']);
unset($dsn['password']);

// use all remaining parts in the DSN
foreach ($dsn as $key => $val) {
$dsn[$key] = "$key=$val";
}
という処理でDSNを組み立てているので、unsetで除外することで
DSNの中にはuserとpasswordは入らないようにされている。

その上で、PDOが第二引数をちゃんと受け取れていない、という話であれば
それはPDOのバグかもしれない。
01191122007/03/03(土) 13:57:46ID:fjJSaYh6
PHP板にも書いたんですけど
>>113を見逃していました。みなさんごめんなさい。

passwordを省略すると、あの得体の知れないエラーが出るようです。
エラーが間違ってるジャン!PDOのバグだ!と怒りたいところですが
113の指摘を見逃した私がすべて悪いわけでして・・・

申し訳ございませんでした。
&ありがとうございました。  
0120nobodyさん2007/03/03(土) 23:21:06ID:???
Zendで行こうかと思ったがやっぱりsymfonyで行きます
symfonyが10としたらZendは3くらいだし
Zendしょぼすぎワロタ
0121nobodyさん2007/03/04(日) 04:37:54ID:???
Zend_Service_Akismetとやらを見て、Akismetの存在を知った。
面白いなこれ。
0122nobodyさん2007/03/04(日) 05:28:00ID:???
ZendはsymfonyのescapingOutputがないのが糞
いちいちescapeしてられるかっての
0123nobodyさん2007/03/04(日) 14:32:22ID:???
おいおい…
http://www.zend.co.jp/tech/index.php?%A4%BD%A4%CE%C2%BE%2FZend%20Framework
ここのサンプルだと、View呼び出すのに絶対パスコントローラに埋め込んでるじゃねぇか…
いくらなんでもひどすぎだろ
0124nobodyさん2007/03/04(日) 14:52:52ID:???
zend japanのレベルなんてそんなもの
0125nobodyさん2007/03/04(日) 16:57:57ID:brIiO66u
Zend_Db_Tableってもしかして
Zend_Db_Selectと連携出来ないっぽいですか?
0126nobodyさん2007/03/04(日) 17:01:33ID:???
>>125
別扱いだな
tableにrailsライクなfind()が欲しけりゃselect使って実装しろってこった
0127nobodyさん2007/03/04(日) 17:05:28ID:???
ZF疎結合すぎワロタ
0128nobodyさん2007/03/04(日) 17:21:00ID:brIiO66u
>>126
public function fetchSelect($select){
      return new Zend_Db_Table_Rowset(array(
'db' => $this->_db,
'table' => $this,
'data' => $this->_db->fetchAll($select),
));
}

でいちおう出来たけど、こんな感じかな。

これって、DBから一度配列で持ってきてから、PHPでオブジェクトにマッピングしてないですか?
PDO::FETCH_CLASS使った方が早いと思うんですけど、どうなんでしょう?
01291252007/03/05(月) 00:37:51ID:514EdfV5
PDO::FETCH_CLASSでfetchAll簡単に出来ました。
やっぱり早いですね。当然ですけど。
まあ、WEBアプリでは一回に何千もレコード取得して表示する事もそんなないだろうから
差は微々たる物だけど

このフレームワーク、完成度は(当然正式版じゃないので)イマイチだけど
ソース見てると、すごいよく設計されてると思う。

今後に期待しちゃうな

とりあえず自分で改造したやつ使うつもりだけど。
0130nobodyさん2007/03/05(月) 10:22:28ID:???
図書館で「PHPの薬箱」を借りてきました。
Symfony、Zend Framework
とりあえずこの二つを使えればプロとして自信が持てそうですw
0131nobodyさん2007/03/05(月) 10:43:01ID:???
結構いいよね、phpの薬箱。
01321252007/03/05(月) 14:11:20ID:c6MP6ips
良く見たらZend_Db_Table_Rowsetって
1rowが1objectじゃなくて
Zend_Db_Table_Rowset Object に全行の配列を持ってるんですね

見間違いました。

>>130
PHPの薬箱は、まだ読んでないですね。チェックしてみます。
私のオススメは
Zend Frameworkと関係なさそうで、微妙に関係ある
「PHPによるデザインパターン」
0133nobodyさん2007/03/12(月) 08:54:48ID:2JUfcRN6
ttp://www.itmedia.co.jp/enterprise/articles/0703/08/news018.html

この記事試してみた人いますか?
動きが解って良いんですけど、このブログツールにログインするIDとパスが解りませんOTZ
記事投稿してみたり、いろいろしてみたいんですけど・・・

解りましたら。教えてください。
0134nobodyさん2007/03/14(水) 10:42:23ID:62gHBZHz
Zend_Controllerで質問です。

IndexControllerのnoRouteActionが呼ばれないんですけどなんか設定が必要なのでしょうか?
例えば
http://www.hoge.com/Index/foo/
とか設定してあるActionを呼ぶと問題なく動きます。で、
http://www.hoge.com/Index/bar/
とか、設定してないActionをよんでもnoRouteActionが呼ばれません。
試しに
http://www.hoge.com/Index/noRoute/
とすると呼ばれます。
なぜでしょうか?指定がないときに呼ぶActionを設定したりしなきゃならないのでしょうか?
お願いいたします。
0135nobodyさん2007/03/14(水) 10:47:31ID:62gHBZHz
ちなみに、ないアクションを呼んだときは真っ白な画面でソースを見ると
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
しかありません。
0136nobodyさん2007/03/14(水) 11:52:04ID:???
なんかそんなのあった気もするがバージョンは?
最新の0.8ってもうnoRoute自体なかったような(__call()で処理)
0137nobodyさん2007/03/14(水) 11:54:47ID:???
>>135
PHPのエラーログとか見れ。
01381352007/03/14(水) 13:09:56ID:???
>>136
>>137
レスありがとうございます

まさに0.8でした。
__callで処理するようになったんですね。
うまく出来ました。
0139nobodyさん2007/03/14(水) 20:08:38ID:???
Zend_Controller_Router_Route_Module が動かないんだけど・・・

マニュアルには
$compat = new Zend_Controller_Router_Route_Module();
$this->addRoute('default', $compat);
って書いてあるけど、いろいろ試したが動かない・・・・・・
0140nobodyさん2007/03/14(水) 21:37:24ID:???
ルーター細かくいじるならソース嫁
よっぽどでない限りデフォルトのルートだけで事足りるじゃん
0141nobodyさん2007/03/14(水) 22:10:20ID:???
0.8でモジュールも色々変更あったんで
http://framework.zend.com/manual/ja/zend.controller.modular.html
ここ読めば分かると思うけど普通のフロントコントローラー使って、
配列でディレクトリ指定してやれば使えるようになると思うよ。
0142nobodyさん2007/03/14(水) 23:00:11ID:???
レスサンクス!

>>140
確かに普通のルーティングだけでも十分満足だけど、
admin を別のアプリにしようと思って。
ソースよむかな・・・

>>141
なるほろ。
助言を基にもう一度やってみます。
01431392007/03/15(木) 10:40:52ID:???
できました。
include_path が通っていないだけでした。。
0144nobodyさん2007/03/18(日) 13:33:48ID:WPSFKvBp
お約束?のディレクトリ構造にしてアプリをつくるとして
やっぱりmodelsにはincludeパスは通して使う物なのでしょうか?

そうすると

Zendのlibrary
pear(使いたい物がちょこっとあるので)
全アプリ共通で使うclass群の入ってるディレクトリ
そして、いくつかのmodelsディレクトリ

と結構includes path通すところが数が多いのですが、
なんか、どこかで、あんまりいっぱいincludes pathを通すと、
検索する場所が増えるので、全体のパフォーマンスが低下するって
見た覚えがあります。

modelsにあるものを毎回フルパスで指定するのも何だし・・・
なんかうまい方法見逃してますか?
それとも5.6個通すぐらいなら気にすることないのでしょうか?
0145nobodyさん2007/03/18(日) 20:07:56ID:???
pear用のディレクトリに関してはもう
php.iniレベルで設定しておいていいし
pear本家でZendネームスペースを使う事もないだろうから
pear用ディレクトリ以下でZend/Zend.phpをsymlinkにしておけば
アプリ側でinclude_path追加するのは
lib/modelくらいで済むんじゃないかね
0146nobodyさん2007/03/18(日) 22:00:42ID:WPSFKvBp
>>145
レスありがとうございます

ふむ。modelに関してはそのアプリのindex.phpでパスを通せばいいのか・・・
まあ、なれてないのでいろいろ考えちゃってるけど、とりあえず作ってみれば
どうすればいいか解ってくるかな。

プレビューが0.9.0になってますね。
マニュアルもちょっとアップされたかな。たぶん。
祝い上げしておきます。

ところで、フォームはpearでやろうと思ってたけど、viewヘルパーなるよさげなものが
あるんですね。あれとZend_Validateを使ってみます。
0147nobodyさん2007/03/19(月) 15:31:58ID:Y3+UeIKc
View周りをプラグインで簡単にしようと思うんですが
クラス名をどうしたらいいか悩んでます
My_Plugin_Viewとか考えたんですけど
なんか良い感じの無いですか
0148nobodyさん2007/03/20(火) 23:47:27ID:EqlsiciX
>>147
そんなんどうでもいいよっていう人も多そうだけど
意外にネーミングって悩むし、大事ですよね。

個人的にMyと_(アンダーバー)は嫌いなので
(サイト名や会社名や自分の名前)(機能を端的に表した単語)ViewPlugin
例HogeConvertViewPlugin
とか・・・
長いか・・・・
いっそのこと
HogeConvertVP
とか。
01491482007/03/21(水) 00:05:18ID:+1/xKX/r
質問しようと思って開いたのに書くの忘れた。
MVCというのが何となく解ったようで解らないんですけど

例えばフォームからの入力をDBに登録後、一覧を表示。

なんてアプリの場合、ファームのヴァリデイトはControlでするのでしょうか?
そんな気がするのですが、Modelのような気も・・・

どんなもんでしょうか?
0150nobodyさん2007/03/21(水) 06:51:01ID:???
>>149
validationの定義はmodelに対して行う。
それを呼び出すのはcontrollerで行う。
0151nobodyさん2007/03/21(水) 16:05:45ID:NvhysGYm
Smartyのキャッシュ使いたいんだけど、その辺どうなの?
0152nobodyさん2007/03/22(木) 11:11:22ID:???
>>151
使えばいいと思うヨ!

みんなViewを素で使ってるのかな?
俺はViewを抽象化もせずにSmarty直接叩いてるけど。
0153nobodyさん2007/03/22(木) 13:22:24ID:???
今頃Zendコアクラスに変更か
0154nobodyさん2007/03/25(日) 00:39:42ID:kYJTpB8y
404ページをどうやって作ればいいんだ
0155nobodyさん2007/03/25(日) 02:34:38ID:07q9VATM
>>154
奇遇だね。今日おれも同じコトやってたw

Actionが見つからない場合はは__callが呼ばれるので
そこで404ページを出せばOKだけど
問題はControllerだよね。

省略された場合はデフォルトコントローラー(index)が呼ばれて、
ないコントローラーが呼ばれた場合デフォルトでは何も起こらない(本当は例外が投げられてるけど)じゃないですか?
Dispatcherまわりをもっとよく調べれば簡単な解決策あるかもしれないけど、とりあえず強引に解決してみた。

まずZend_Controller_Frontで
$controller->setParam('useDefaultControllerAlways',true);
で、ないコントローラーが呼ばれた場合もデフォルトのコントローラーが呼ばれるようにして

indexControllerのinit()で

$controller_name=$this->getRequest()->getControllerName();
$request_params=$this->getRequest()->getParams();
if($controller_name != $request_params['controller']){
    $this->__call();
}

とかやって実際にリクエストされたコントローラー名と呼ばれたコントローラーが違った場合は
__callを呼んで404ページを呼び出すようにした。

こんな感じじゃ駄目ですか?
もっと簡単な方法あったら伝授お願いします。

どうもDispatcherっていうのが馴染みがないせいか、イマイチよくわからなくて・・・
0156nobodyさん2007/03/25(日) 02:45:08ID:???
1.0になったらどうにかなるかもしれないから放置するべきか・・・
404くらいデフォルトでなんとかなるようにしてくださいよ!
フレームワークあんだから!
0157nobodyさん2007/03/25(日) 12:06:39ID:???
useDefaultControllerAlways=trueで
デフォルトのコントローラを404コントローラにする
んでアクションが無い場合(__call)もそっちにforwardしてやるとか

何事にも気が利かないのはZFのデフォルトの仕様
rails:設定より規約
ZF:規約よりおまえが書け
0158nobodyさん2007/03/25(日) 13:20:21ID:07q9VATM
>>157
それするとコントローラー省略したときも404が出ちゃわない?
ttp://www.yahoo.co.jp/
みたいにドメインだけ入力したとき。

省略された場合と、存在しない場合で動き変えられれば簡単に解決なんだけど・・
0159nobodyさん2007/03/25(日) 14:55:53ID:???
>>158
URLが空の場合はIndexControllerにルーティングすればいい
0160nobodyさん2007/03/25(日) 15:33:13ID:UfKh4Z0S
noRouteActionじゃダメなの?
0161nobodyさん2007/03/25(日) 15:50:16ID:???
俺もそう思った。
コントローラごとにオーバーライドするのは面倒くさいと見るか、コントローラごとに分けることができて便利と見るか・・・。
いざとなったら、404用のabstractなコントローラを用意して、継承しまくるとか。
0162nobodyさん2007/03/25(日) 15:58:06ID:???
noRouteActionはもうない
01631612007/03/25(日) 16:49:33ID:???
ごめん、最近のバージョンは全然チェックせずに言ってた。

ついでに最新バージョン落としてソースを追ってみたけど、
useDefaultControllerAlwaysをfalseにしておけば、コントローラが存在しない場合にZend_Controller_Dispatcher_Exceptionが投げられるから、これをcatchして404出せばいいんじゃないかと思った。
あと、アクションが存在しない場合はZend_Controller_Exceptionが投げられるっぽい。
さすがにZend_Controller_Exceptionだと、その名前から察するに別の状況でも投げられそうな気がするから、少し微妙かもしれない・・・。

とりあえず、>>155の言ってる、
>Actionが見つからない場合はは__callが呼ばれるので
>そこで404ページを出せばOKだけど
ってのがどういう意味かよくわかんなかったんだけど、__callを自分のアクションでオーバーライドして処理するってこと?
0164nobodyさん2007/03/25(日) 18:22:22ID:???
>>163
そう、旧バージョンのnoRouteActionを__callでどういう風にするのかは
http://framework.zend.com/manual/ja/zend.controller.migration.html#zend.controller.migration.fromzerosix
ここの一番下に載ってる

まとめてみる
コントローラが見つからなかった場合、どっちでもいけると思う

useDefaultControllerAlways=falseなら>>163のように
Exceptionをcatchして404にforward or redirect

useDefaultControllerAlways=trueなら>>157のように
デフォルトコントローラを404のハンドリングに使う

ルーティングが '' (ドキュメントルート)の場合にも
404にハンドリングされてしまうのでRouterに最優先で
'' の場合はIndexControllerにルーティング

あと個人的にActionが見つからないのをハンドリングするためだけに
__callを使うのはもったいない(__callを使った拡張ができない)ので
Zend_Controller_Actionのdispatchをオーバーライドして
自前でアクションが見つからなかった場合の処理を実装して
__callを自分で使えるようにしておいた方がいいと思う

こんな感じかな?
01651612007/03/25(日) 19:58:28ID:???
>>164
なるほど。APIが禿しく変わったと思ってたけど、けっこうちゃんとマニュアルに書いてあるんだな。
404の処理方法も正式バージョンではドキュメント化されるかもね。
ひとまず当面は>>164のやり方しかないんだろう。
0166nobodyさん2007/03/25(日) 23:02:53ID:clpaUIjl
Zend_Loaderってなんだよorz
01671572007/03/26(月) 10:29:04ID:jn+p2f5C
例外キャッチするって言う手もあるか
すっかり頭から抜け落ちてた。

getRequest()->getParams()['controller']とgetRequest()->getControllerName()
を較べるのはまずいっぽい。_forwardしたときに呼ばれちゃう・・・

例外キャッチにしようかな

まあ、どっちにしても1.0までには指針を示してくれるのだろうか?

ところで、Validateチェーンって
$breakChainOnFailure を true にしなければgetMessages() で全てのエラーメッセージを配列で受け取れる仕様じゃないんでしょうか?
どうも期待通り動かなくて、ソースを見たところ

$this->_messages = $this->_messages + $validator->getMessages();

となっています。
こういうのってarray_merge使わないとだめだったようなきがするんですけど勘違いでしょうか?
それとも最初エラーメッセージだけ帰ってくるのが動き的にあってるのでしょうか?

話は違いますが
0.9.1がでてますね。早く正式リリースされないかな
0168nobodyさん2007/03/26(月) 11:28:00ID:B9eaVhyg
2重投稿防止の処理ってなんかあるの?
今までは自前でセッションとリクエスト比較して来たんですが。
0169nobodyさん2007/03/26(月) 11:55:36ID:???
そんな高級な機能がZFにあるわけないです
01701682007/03/26(月) 12:52:34ID:???
>>169
おお。
気に入った。
0171nobodyさん2007/04/01(日) 11:53:09ID:sAfc6g3U
Controllerを使って推奨のディレクトリ構成で構築したとき
例えばあるviewにスタイルシートを埋め込むとき、
Frontを起動したindex.phpから見たパスになるんじゃないんでしょうか?

相対パスで
<link href="styles/hoge.css" rel="stylesheet" type="text/css" />
とやっても認識されず、
<link href="/styles/hoge.css" rel="stylesheet" type="text/css" />
と、ドメインを省いた絶対パス指定じゃないと認識しないのですが、これしか方法ないのでしょうか?

それとも、相対パス指定が間違ってますでしょうか?

絶対パスでも良いんですけど、dreamweaverで認識しないので、ちょっと面倒かなと・・・
0172nobodyさん2007/04/01(日) 12:01:18ID:???
あった、ZFcheckDoublePost
0173nobodyさん2007/04/01(日) 12:32:18ID:???
>>171
mod_rewriteの設定は修正したのか?
0174nobodyさん2007/04/01(日) 15:41:17ID:sAfc6g3U
>>173
.htaccessは

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

となっています。
変わったのでしょうか?
0175nobodyさん2007/04/01(日) 18:23:36ID:???
そのcssのURLもrewriteされてるんじゃないかと
思ったんだけどcssだから大丈夫か
相対パスはindex.phpからのであってるよ
0176nobodyさん2007/04/01(日) 19:08:42ID:+UiPUal0
>>171
画像やスタイルシートはドキュメントルートからのパスになるだろ?
01771712007/04/01(日) 19:14:37ID:sAfc6g3U
>>175
レスサンクス

どうやらリクエストしたURLの階層から見た相対パスになってるみたいです。
たとえばURLが
http://www.hoge.jp/foo/bar/
だとして、ドキュメントルートにstylesフォルダがあるとすると
スタイルシートは
<link href="../../styles/foobar.css" rel="stylesheet" type="text/css" />
で認識しました。
formのactionも、foo/bar/とすると
http://www.hoge.jp/foo/bar/foo/bar/
にpostします。

これは挙動としておかしいってことでしょうか?
なにか、設定が間違ってる?
baseUrlあたりがくさいと思い、var_dumpしてみたら
["_baseUrl:protected"] => string(1) "/"
になってます。

他のみなさんも
>>175さんのご指摘どおり
index.phpからのパスになってるのでしょうか?

でも、そうじゃないと、アクション省略したときと、指定したときで、めんどくさい事になりますよね?
ちなみに0.9.1です
0178nobodyさん2007/04/01(日) 20:18:45ID:???
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" />

でいいんじゃないの?
0179nobodyさん2007/04/01(日) 20:47:16ID:???
<base href= で相対リンクの基準指定しておけばOK
0180nobodyさん2007/04/01(日) 22:32:21ID:sAfc6g3U
>>179
ほうほう、そのタグ知らんかった・・・
サンクス
<base href="http://www.hoge.jp/"; />
で、いけました。

しかし、他のmod_rewriteを使ってURIを置き換えるようなフレームワークも
みんな、絶対パスか<base href="">を使ってやるモンなのでしょうか?

たしかに、いたってデフォルトの動きっぽいですけど。
0181nobodyさん2007/04/01(日) 22:56:18ID:???
んなわきゃない
baseタグ使うとかバカげてる
ほんとにrewrite効いてるのか?
0182nobodyさん2007/04/02(月) 00:22:58ID:???
>>154-167
遅レスだけど、単純に

$front = Zend_Controller_Front::getInstance();
$front->run("/path/to/controllers");

$res = $front->getResponse();
if ($res->isException()) header("Location: http://localhost/";);

とかじゃダメ? 話が違う?
header のところを 404 を出す処理にでも変えればいいような気がする。
01831802007/04/02(月) 08:46:24ID:UNZvnAmN
>>181
まじですか?

適切なコントローラとアクションに振り分けられるので
たぶんrewrite自体はは聞いてます

ちなみにindex.phpのコードをさらすと
$controller = Zend_Controller_Front::getInstance();
$config=GomoConfig::getInstance();


$controller
->setControllerDirectory('path/to/controller','default')
->throwExceptions(true);

try{
$response = $controller->dispatch();
} catch (Zend_Controller_Dispatcher_Exception $e) {
$controller->setDefaultControllerName('notfind');
$controller->setParam('useDefaultControllerAlways',true);
$response = $controller->dispatch();
}

こんな感じです。

apacheの設定関連でしょうか?
mod_rewriteの設定でRewriteBaseというのがあったので
ドキュメントルートのパスを設定したり、"/"のみを設定してみましたが、駄目でした。
どの辺を見直せば良さそうですかね?
ご意見ありましたらよろしくお願いします
01841802007/04/02(月) 10:01:33ID:YVop49f1
>>181
違ったらすいませんが、
もしかして
>>178さんみたいに"/"から指定してないですか?
<link href="/styles/foobar.css" rel="stylesheet" type="text/css" />
それならうごくんです。というか、絶対パスだし。

う〜ん、ちょっとsymfonyのスレで確認してみます。
0185nobodyさん2007/04/02(月) 18:45:53ID:???
>>184
どっちのスレで答えるか迷ったけどsymfonyで自動生成されるタグは
絶対パスになってる。
CSSとか画像へのリクエストはクライアントのブラウザがリクエスト
するものだからブラウザに表示されてるURLからの相対パスで
不思議じゃない。
01861812007/04/02(月) 19:11:38ID:???
ごめん俺が間違ってた
相対パスで試したら余裕で無理だったなんか勘違いしてた
よくよく考えたらURLをrewriteする場合に
相対パスでリソース指定なんてした事なかった
今は反省している
普通絶対パス指定だな
あとdreamweaverはサイト設定したら
認識してくれるもんじゃないかね
01871842007/04/03(火) 00:18:05ID:3FiNTxl4
>>184
レスありがとうです。
symfonyのほうでもレス頂きましたが、すっきりしました。

>>186
いえいえ、そんなに反省しなくてもw
勘違いは誰にもあるし

サイト設定はすっかり忘れてました
試してみます
サンクス
0188nobodyさん2007/04/07(土) 17:33:25ID:???
第2回 Zend Framework Code Camp ハンズオンセミナー
http://www.zend.co.jp/events/

これはノーパソもくれるってことなのかな
0189nobodyさん2007/04/07(土) 18:19:08ID:???
1人5万とかぼろい商売やってんなあゼンドジャパン
0190nobodyさん2007/04/07(土) 19:39:02ID:???
9.2きた!
0191nobodyさん2007/04/07(土) 20:28:11ID:???
>>188
もちろん、もらえる。
費用に含まれてる。
0192nobodyさん2007/04/07(土) 21:22:05ID:???
5万でノートPCもらえるの?
0193nobodyさん2007/04/08(日) 04:50:22ID:???
おまえら常識で物考えろw
0194nobodyさん2007/04/08(日) 07:05:34ID:???
ゼンドの糞高い独自資格保持者の指導じゃないの?

まあゼンドエンジンを無料で使っておいて、いまさらゼンドを馬鹿にできる立場じゃないだろうが。
他のPHPエンジンを選択して使えれば良いのにな。
0195nobodyさん2007/04/08(日) 07:11:17ID:???
Zendはともかく
ゼンドジャパンがあまりレベル高いと思えないのは俺だけ?
0196nobodyさん2007/04/08(日) 09:58:31ID:???
みつまJAPANぐらいだよな
レベル高いの
01971882007/04/08(日) 18:08:08ID:???
>>191
やったー

>>193
そうですよね。常識で考えて講習だけで5万はおかしいですよね。
0198nobodyさん2007/04/08(日) 20:39:22ID:???
>>197
君学生でしょ?1日講習で5万とか普通。
だからといって、その講習にそれだけの価値があるかといえば・・・。
0199nobodyさん2007/04/08(日) 22:55:44ID:???
昔 Oracle の一日講習会で 10 万ってのにビビったことがある
会社がお金を出してくれるんでなかったら、自分じゃ行ってないな
0200nobodyさん2007/04/08(日) 23:06:45ID:???
講習会なんか行くよりググったほうがためになる
0201nobodyさん2007/04/09(月) 00:24:50ID:???
おまえらこれでも見てびっくりしとけ

http://www.blackhat.com/html/bh-japan-07/bh-jp-07-jp-reg.html
0202nobodyさん2007/04/09(月) 00:29:53ID:???
安っ!100人分申し込んだ
0203nobodyさん2007/04/09(月) 00:38:59ID:???
>>201
そんなの申し込む人おるん?
0204nobodyさん2007/04/09(月) 02:02:12ID:???
俺が口臭をyoutubeで流してやるよ!
0205nobodyさん2007/04/14(土) 23:56:03ID:6HoqK2AI
みなさんZend_Mailはつかってますか?
日本語どうしてます?
$mail = new Zend_Mail('iso-2022-jp');
でインスタンス化してmb_convert_encodingでiso-2022-jpにした文字を
addしていってもエンコードがquotedprintableだから本文文字化けしちゃいます。

エンコードをBASE64に切り替える方法って解りますか?

mb_convert_encoding も面倒だからsend時のtransportを
mb_send_mailを使った物に変えちゃおうかとも思ったんだけど
エンコードで引っかかりますね。quotedprintableはダメよって。

あと、 iso-2022-jpを文字コードに指定するな、みたいなエラーも出てたけど
mb_send_mailはheaderに文字コード指定しちゃいけないのかな?
0206nobodyさん2007/04/15(日) 00:57:32ID:???
>>205
Zend_Mail関連は少し前のバージョンでちょっと使ってみたけど
UTF-8で長いサブジェクトのメールだとなんかうまくいかなくて
さんざんソース追いまくった挙句どうもバグっぽかったので
結局mb_encode_mimeheaderで自前でBASE64エンコードしたのを
セットするっていうこれじゃビルトインのmail()使ってんのとかわんねー的な
方法に落ち着いた記憶があるw

今昔のソース見てみたら
$mail = new Zend_Mail('UTF-8');
・・・
$mp = $mail->setBodyHtml($html);
$mp->encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE;
こんな感じだったのでこれをBASE64にすればいけるんじゃないかな

正直ZendのMail関連はまだ色々安定してない感じがした
枯れてるという意味でまだPEARのMailライブラリの方が
素直に動いて安定はしている(E_NOTICE出るバグは残ってたけど、、)
今はどうかわからないけど参考までに

どちらにせよmb_send_mailは使わないかな
02072052007/04/15(日) 04:41:44ID:f7ZVC+MY
>>206
レスありがとうございます。

携帯のメールで四苦八苦してたんですけど
本文は文字コードiso-2022-jpでエンコードは7bitみたいですね
勘違いしてました。私のメイン携帯のSoftBANKはcontents-type指定してやれば
UTF-8でも正しく表示されるのですが、ウィルコムとか、試してないけどたぶんDOCOMOとかって
iso-2022-jp 7bitじゃにとだめっぽいですね。

まあ、それはあんまり関係ないので置いといて^^;
206さんが試したときのバージョンだと>setBodyHtmlはZend_Mime_Partを返してたみたいですね。
0.9.2は
return $this;
になってるので、
$mail->setBodyText(mb_convert_encoding("日本語本文",'iso-2022-jp'));
$mp=$mail->getBodyText();
$mp->encoding = Zend_Mime::ENCODING_7BIT;
とやらないとだめっぽいのかな。
いちおうこれで文字化けしないでウィルコムいけました。

PCやSoftBANK(AUやDOCOMO試してないのでわかりませんが)ならUTF-8(内部エンコーディング)
で、ぜんぜん問題ないのでいいのでが、携帯も視野に入れると、いちいちmb_convert_encodingしなきゃならないので
面倒だから、mb_send_mailで出来ないのかなと思ったわけでして。
Zend_Mailもnewしたときの文字コードに全部自動変換してくれれば楽なのに・・・

自動変換するように拡張しようかな。
transporterをmb_send_mailに変えるよりその方がよさそうですね。
0208nobodyさん2007/04/15(日) 13:38:18ID:???
  \(^o^)/             \(^o^)/ zend frameworkオワタ
    )  )               ノ ノ
((((  > ̄ > )))) \(^o^)/ ((( < ̄< ))))
              )  )
         (((  > ̄ > ))))    code igniterハジマタ
02092052007/04/15(日) 16:11:36ID:f7ZVC+MY
とりあえずいまのところ日本語メールはサポート外って感じですね。

問題はquotedprintableでエンコードしちゃうところ。
本文なんかは上の方法で変えられるけど、ヘッダーは強制的に
quotedprintableでエンコードされちゃう。

とりあえず、add、set系で日本語入れる可能性のあるものを
オバーライト(ド?)して自動的に文字コードを_charsetにしちゃうようにして
本文のsetはエンコードをENCODING_7BITに、ヘッダーはBASE64にしたら
だいたいOKな感じ。

まあ、まだベータだし今後に期待かな。
0210nobodyさん2007/04/16(月) 12:14:45ID:l/zxgJId
>>209
おまえは何を言ってるんだ?
0211nobodyさん2007/04/22(日) 00:02:52ID:???
view内でmodule名を常に取得したいんですが、一々Assignするの面倒なんで何か良い方法ないでしょうか?
init使うってのも考えたんですが他にスマートな方法とかないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています