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

Zend Framework Part3

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/10(金) 08:35:00ID:???
公式
http://framework.zend.com/

マニュアル
http://framework.zend.com/manual/ja/

(有力翻訳者のm-takagiさんのver)
http://www.m-takagi.org/docs/php/zend/

バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa

API
http://framework.zend.com/apidoc/core/

前のスレッド Zend Framework Part2
http://pc11.2ch.net/test/read.cgi/php/1204726884/
0201nobodyさん2009/05/29(金) 00:12:05ID:???
>>200
自分のとバージョンも一緒ってこと?
0202nobodyさん2009/05/29(金) 04:14:28ID:???
>>200
MIME系の知識はZFの範疇外、WEB PGとしての基礎知識なので追々学べばいいよ。

ただ具体的に何が文字化けしてるかわからないと、詳細な原因は特定できないよ。
件名?本文?半角カナ文字?

とりあえず、ヘッダとボディをBase64化してみれ。

Zend_Mail::setEncodingOfHeaders(Zend_Mime::ENCODING_BASE64);
Zend_Mail::setBodyText($txt, "utf-8", Zend_Mime::ENCODING_BASE64);
0203nobodyさん2009/05/29(金) 08:09:01ID:???
setEncodingOfHeaders はdeprecated扱いなので代わりに
setHeaderEncodingを使ってちょ
0204nobodyさん2009/06/01(月) 12:02:39ID:???
>>193
件名が長くなると化けるんじゃなかったっけ
もう修正されてたらごめん
ttp://nonn-et-twk.net/twk/node/155
02051932009/06/01(月) 13:28:19ID:VRCsDIyG
結局、原因はわからずでしたが、
$mail->setBodyText($body,"UTF-8")を
やってみたら、文字化け報告はなくなりました。

お騒がせしてすいません。
0206nobodyさん2009/06/01(月) 18:27:00ID:???
原因がわからずでしたで済ませちゃうのか…PGとしては最低だな…。
MIMEの基礎から学んでこいや。
0207nobodyさん2009/06/01(月) 19:14:02ID:VRCsDIyG
だって、ほとんどの環境で文字化け確認できないだもん。
社内向けのものだし、まぁ、いいんじゃね?みたいな。
で、一応、setBodyText($body,"UTF-8")でその人の文字化けも直ったしw
0208nobodyさん2009/06/02(火) 00:17:42ID:???
次の質問予想

社内のサイボウズで文字化けします
どうしたらいいですか?
0209nobodyさん2009/06/02(火) 01:16:44ID:???
まっとうなWEB PGなら、setBodyText($body,"UTF-8")で治った時点で原因が理解出来ると思うがなw
君はPGに向いていない、PGの能力の差は大抵がデバッグ能力の差だよ。

setBodyTextメソッドすら使いこなせてなかった時点で、素人以下ってのは明白だがw
0210nobodyさん2009/06/02(火) 01:40:06ID:???
1.8の話題にしようぜ
人を叩くのは良くないですよ
02112072009/06/02(火) 13:04:23ID:IL6uVg+K
>>209
てへへw
0212nobodyさん2009/06/03(水) 10:05:42ID:???
まあ、そんなカッカすんな。
取りあえず動けばいいって言う考え方はWEBなら悪くないと思うぜ。
0213nobodyさん2009/06/03(水) 22:14:24ID:???
ゆとり世代はこえぇなぁ・・・
0214nobodyさん2009/06/03(水) 23:06:32ID:???
とりあえず動くだけじゃ駄目だから
Webシステムは簡単にサイト落ちたりクラックされたりするんじゃないのか
0215nobodyさん2009/06/04(木) 03:00:03ID:???
PHPは基礎知識なしでとりあえず動いちゃうからね・・・ゆとりの巣窟になるのも仕方無い。

と自分に言い聞かせている。
職場の部下だったら小一時間説教もんだけどw
0216nobodyさん2009/06/04(木) 14:55:40ID:hOup5cX3
>>215
んな事言ってるおまえがひどいコード書いてるかもなw
0217nobodyさん2009/06/05(金) 16:57:04ID:???
ひどくないコードってどんなコード?
0218nobodyさん2009/06/05(金) 20:52:18ID:???
>>217
おまえの書くコードじゃね?
0219nobodyさん2009/06/07(日) 06:22:41ID:???
画面遷移が多かったり、フォーム項目が多かったり、Controllerの処理が長くなりそうな時ってどうしてる?
ファイル分割したいんだけども、ZFに命名規約が無いから迷ってるんよ。
0220nobodyさん2009/06/07(日) 07:28:29ID:???
それはもうプロジェクトの裁量で外に追いやっていくしかない
0221nobodyさん2009/06/07(日) 11:34:03ID:???
ディレクトリ階層が複雑になると管理が面倒になりませんか?
controllersの中に適当に掘りまくっていいのかな…
0222nobodyさん2009/06/07(日) 11:39:35ID:???
具体性がないから、何がしたいかわからないんだよな。

一応言っとく、
コントローラーは同一階層でのサブ化と、階層を掘ったサブ化で
コントローラー名の命名規則あるからね。
camelcaseでサブ化すると同一階層、_で区切るとディレクトリ
0223nobodyさん2009/06/07(日) 11:47:24ID:???
クラスの命名規則はしってるよ。
リファレンス通りのディレクトリ構成で作った場合にコントローラ内の一部ロジックを外だしにしたいんだ。

たとえば、
IndexCotroller内の処理が冗長になりそうなので、一部のロジックを外部に出したい場合とかね。
0224nobodyさん2009/06/07(日) 11:55:35ID:???
modelsがそれじゃないの?
0225nobodyさん2009/06/07(日) 12:09:19ID:???
modelはもう少し汎用的なものなイメージがあるけど、それでいいのかな。
0226nobodyさん2009/06/07(日) 12:50:15ID:???
他のコントローラや他のプロジェクトでも使うならアクションヘルパにするし
モノによってはプラグインにする。
Zendの規則に従わずに普通にライブラリディレクトリ作ってincludeしても
別におk。モデルにした経験は無いな。
0227nobodyさん2009/06/07(日) 12:50:24ID:???
たとえば、どんなロジック?
0228nobodyさん2009/06/07(日) 16:54:10ID:???
symfonyの場合はPeerメソッドにある程度突っ込んだりするけどな
0229nobodyさん2009/06/11(木) 14:08:50ID:v8Ky+P1J
Actionのinitでエラーが発生したときエラーページに_forwardしてるんですが
すぐ処理が転送してくれません。

例えばController_Actionのメソッドとして、init(),とloginAction()
があるとします。
init()でDBの接続処理を行い、接続できなかったときにエラーページに
飛ばしたいのにloginActionが実行されてしまいます。
#_forwardにはreturn をつけて書いてます。
init()からすぐ別コントローラに飛ばすにはredirectじゃないとだめなんでしょうか
みなさんどうしてますか
0230nobodyさん2009/06/11(木) 14:46:49ID:???
まず、_forwardとredirectは別ね。
で、おれなら、DB接続エラーはコントローラーにはハンドルさせないで例外を投げる。
initは初期化処理のみにしておけば、通常処理用のエラー処理は入ってこないはず。
が、どうしても、アクション前条件判定でエラーコントローラーに飛ばすなら、
preDispatchで_forwardする。
0231nobodyさん2009/06/14(日) 17:33:28ID:???
1.8.3 使ってたら
exception 'Zend_Cache_Exception' with message 'cache_dir must be a directory' in /virtual/monabase/library_test/Zend/Cache.php:208
っていうのが出るようになったんですけど
キャッシュとか使わなくていいんで
どうにかなりませんか?
0232nobodyさん2009/06/14(日) 19:06:28ID:???
どうにかしたかったら、backtraceぐらい晒してくれ。

おれは1.8.3だけどそんなエラー出ない。
0233nobodyさん2009/06/14(日) 19:48:51ID:???
Zend_Locale::setCache();したら直った
Zend_Date使ってるのが影響したんだろうと思うんですけど
0234nobodyさん2009/06/16(火) 20:50:22ID:hxQFGTlU
マニュアルの日本語化って今どうなっとるんです?
0235nobodyさん2009/06/16(火) 22:08:21ID:???
>>234
あなたも翻訳に参加しよう

http://d.hatena.ne.jp/satoruyoshida/20090603/1244035139
0236nobodyさん2009/06/17(水) 12:14:05ID:???
1.8.0からRADツールが追加されたと聞いてやってきました。

再度ZendFrameworkを触ってみようと思います。

皆さんよろしくお願いします。
0237nobodyさん2009/06/17(水) 13:55:51ID:lVB38oSh
Zend Studio Serverはなくなったんでしょうか?
04WebServerとの組み合わせで使用していました。

今出ているZend Server?を試してみましたが、Apache前提みたいです。
0238nobodyさん2009/06/17(水) 17:22:47ID:???
http://framework.zend.com/docs/quickstart/create-a-model-and-database-table
このページで

モデル→データマッパ→ZendDbTable
となってるんですが、

モデルやデータマッパをスクリプトから自動生成する機能はないんでしょうか?
0239nobodyさん2009/06/17(水) 21:25:41ID:???
>>237
公式サポート窓口へドーゾ
0240nobodyさん2009/06/18(木) 20:04:08ID:5iF8/wzr
最近zendfw始めたんですが、imgフォルダとかcssフォルダはどこに置いてどう管理したら良いんですか?
普通にdocumentroot以下に置いて、phtmlには src="/img/hoge.gif"とかすべき?
0241nobodyさん2009/06/18(木) 22:14:24ID:???
>>240
管理し辛いとか、認証をかけたいとか、特別な理由が無い限りはそうなるかと。
0242nobodyさん2009/06/18(木) 23:20:18ID:???
>>240
documentroot以下は同じだが、
俺も最初はそのsrc=のように絶対指定していたのだけど、
<base href="http://www.example.com/..../" />
ってして、相対指定にした。
でないと、開発環境と本番環境の相違を吸収しにくい。
baseタグなんてそれまで使ったことなかったから、すっかり忘れていたわ。
0243nobodyさん2009/06/19(金) 00:54:44ID:???
>>241,242
ありがとうございます
>>242
そのbaseタグ使う方法良さそうですね
もしくは基準のパスを定数でもたせるのも変更時便利かもしれない
ありがとうございました
0244nobodyさん2009/06/19(金) 11:55:12ID:DHeb1GYG
ValidatorのStringLengthって文字数じゃないのね
UTF8だと日本語が思いっきり3でカウントされる
0245nobodyさん2009/06/19(金) 12:16:16ID:???
エンコード設定すれば?
0246nobodyさん2009/06/20(土) 13:15:25ID:???
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 です
何が原因でしょうか、情報不足かもしれないですが、よろしくお願いします
0247nobodyさん2009/06/20(土) 13:17:33ID:sayu7hyr
しまった、、あげさせてもらいます
すみません
02482462009/06/20(土) 13:56:55ID:sayu7hyr
今確認したところ、indexコントーローラ中のhogeアクションは実行できます
→ www.hoge.com/index/hoge/ は表示する
別のアクションコントローラを表示できないようです
なぜだろう。。
0249nobodyさん2009/06/20(土) 17:52:12ID:???
/sample/index

でアクセスした場合はどう?
02502462009/06/20(土) 18:03:33ID: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があります
0251nobodyさん2009/06/20(土) 18:08:33ID:???
クラス名がIndexControllerになってるけどもw
02522462009/06/20(土) 18:15:23ID:???
>>251
うああああああ!!
大変失礼しました!できた、感動した!
0253nobodyさん2009/06/22(月) 13:48:28ID:???
Smarty組み込んで利用してるんだけど、{foreach}が使えない。そういうもん?
0254nobodyさん2009/06/22(月) 13:55:24ID:???
お前は何を言ってるんだ
http://smarty.net/foreach
0255nobodyさん2009/06/22(月) 15:51:12ID:???
>>253
http://www.php-seed.net/blog/archives/370
こういう問題でもなく?
0256nobodyさん2009/06/23(火) 17:52:02ID: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です
0257nobodyさん2009/06/23(火) 22:49:32ID:U9kBq3jC
異なったコントローラで同一のZend_Formを持ち回りたいんだけど何か良い方法ありませんか?
Bootstrapに入れるのは何か違う気がして、、
0258nobodyさん2009/06/23(火) 22:52:11ID:???
ZendRegistryは?
0259nobodyさん2009/06/23(火) 23:19:57ID:U9kBq3jC
レジストリに入れるのもブートストラップ的なところに記述する感じになるのがちょっと

他のコントローラの関数を参照する関数があればいいんですが
IndexControllerから
TestController::getForm()を参照したいです
02602562009/06/23(火) 23:33:48ID:fbX2StFR
256ですが、どういう問題か教えてもらえないでしょうか?
ZendFW以前の問題で話になんね、って感じなんでしょうか?
それならそれで、ご指摘いただけると有り難いです。
一方的にすみませんがよろしくお願いします
0261nobodyさん2009/06/24(水) 00:46:07ID:???
>>260
そのコードだけじゃ情報が足りなさすぎる。

config中にルータの設定とか書いて無い?
一度config.iniを空っぽにして試してみれ。
02622562009/06/24(水) 03:05:26ID:lk5E+v4f
>>261
ありがとうございます。config.iniが原因とは思いませんでした
なかで、データベース接続情報を書いていたんですが、
パスワードに ! を含んでいて、これが原因だったようです(消したら動きました)
!は使えないってことでしょうか、とりあえずPW変更して対応します。。
0263nobodyさん2009/06/24(水) 08:41:21ID:???
吹いたら負け
http://www.nicovideo.jp/watch/1245748338
0264nobodyさん2009/06/24(水) 13:55:46ID:???
>>259
なら、static関数にすればええがな。
0265nobodyさん2009/06/27(土) 11:34:29ID:LkjCp9rV
Zend_AuthのマスタにXMLって使えないの?
0266nobodyさん2009/06/27(土) 19:24:02ID:62AeSP23
viewのテンプレートをクライアントにFTPで直接アップできるようにしてるんですが、
関数は使えないようにしたいと思います。
なんか良い方法ないですか?
0267nobodyさん2009/06/27(土) 21:59:13ID:???
情報ツウは得をする!
⇒ 情報サイト http://sho-zai.com/index.html
0268nobodyさん2009/06/29(月) 14:25:46ID:???
zend_dojoを使って作成したボタンの幅を変更ってできる?
0269nobodyさん2009/06/29(月) 14:28:17ID:dN5c2Pu7
CSS使えば良いんとちゃいますのん?
0270nobodyさん2009/06/29(月) 14:46:32ID:???
echo $this->button(
'foo',
'',
array(
'label' => 'bar',
'style' => 'width:150px',
)
);

こんな感じで幅を指定できないかなと思ったのですが、できません?
0271nobodyさん2009/06/29(月) 17:11:46ID:???
Zend_Dojoを使う利点ってあるのか?
0272nobodyさん2009/06/29(月) 19:08:49ID:???
別に
0273nobodyさん2009/06/29(月) 22:04:00ID:???
Controller側からJavaScript操作するってのが、よくわからん。
普通に書けばええがな。
0274nobodyさん2009/06/29(月) 23:31:03ID:???
>>265
Adapterを作ればOK。

>>266
Zend_Viewでは実質不可能。
Smartyなりのテンプレートエンジンの導入を。
0275nobodyさん2009/06/30(火) 10:36:03ID:AIJgPj0k
皆さんSMARTYと併用してる?
0276nobodyさん2009/06/30(火) 16:00:28ID:???
Zend_Log_Writer_Dbでログを保存したいんだが、日付をdateフィールドに保存したい。
どうすればいい?
0277nobodyさん2009/06/30(火) 16:06:01ID:???
columnMappingでそのカラム名日付のキー名を対応させれば?
0278nobodyさん2009/06/30(火) 18:49:48ID:???
>>277
ありがとう。おかげで解決した。
logに項目追加できるってのもわかったよ。
0279nobodyさん2009/06/30(火) 20:57:51ID:???
次からはマニュアル読んでからおいで
0280nobodyさん2009/07/02(木) 01:17:44ID:???
キャッシュについて聞きたいんですが、
DBからデータを取得してきて、それをキャッシュに保存したりしますよね?

ページング処理にZend_Paginaterを使ってるんですけど、そのpaginaterオブジェクトも
キャッシュとして保存するものですか?

普通はどうしてるんでしょう?

0281nobodyさん2009/07/02(木) 01:58:48ID:???
DBへの問い合わせ結果をキャッシュするのが粒度的に使いやすいと思う
大抵、ボトルネックになるのはDBだし
Webはスケールアウトすればいいじゃん、的な
0282nobodyさん2009/07/02(木) 03:28:49ID:???
横レスだけど、やっぱその場合って更新頻度の低い
マスターとかになるんですかね?
0283nobodyさん2009/07/03(金) 02:02:06ID:???
口コミサイト作りたいです
どうすればいいですか?
0284nobodyさん2009/07/03(金) 04:37:06ID:???
>>283
http://framework.zend.com/manual/ja/zend.controller.html#zend.controller.quickstart
0285nobodyさん2009/07/04(土) 17:45:54ID:???
Zend_Db_Rowsetの$rowset->count()使ってるけど、これって
全データを配列にぶっこんでから、カウントしてくれるだけだよね?
こういうのってPHPのパフォーマンス的にどうなの?

ちゃんと、count(*)関数使ったSQLで取得した方が良いの?
0286nobodyさん2009/07/04(土) 17:55:34ID:???
ZFは開発効率重視だから
そういうアホみたいな処理が多い
0287nobodyさん2009/07/04(土) 18:10:48ID:???
>>285
自分はcount(*)で取得してる。
パフォーマンスは比べるまでもなく、じゃね?(実測した訳じゃないけど)
0288nobodyさん2009/07/04(土) 19:01:27ID:???
全データ、配列ってことはないよ。
結果セットからrowcountとってるから、count以外に使う必要があるようなモデルであれば
Zend_Db_Rowsetで問題なし。
もし、countだけ欲しければ、count(*)でいい。
0289nobodyさん2009/07/04(土) 19:38:55ID:???
↑すまん。忘れて
0290nobodyさん2009/07/05(日) 22:33:37ID:jApqmo0w
ルーターでコントローラでなく画像ファイルを
指定したいんですがなにか方法はありますか?
0291nobodyさん2009/07/05(日) 22:49:24ID:???
それはZFの管理外にしちゃった方がいいんじゃない?
0292nobodyさん2009/07/06(月) 02:41:57ID:???
俺は拡張子というかサフィックスのないリクエストだけ
mod_rewriteの対象にしてるなぁ
0293nobodyさん2009/07/06(月) 06:57:58ID:AIqh19Fa
>>291
>>292
ドキュメントルート上にないファイルなので困っています。
なければコントローラ経由で出力します
0294nobodyさん2009/07/06(月) 07:02:45ID:???
ん?
ドキュメントルート上になくても、mod_rewriteでもAliasでもいいやん
0295nobodyさん2009/07/06(月) 07:04:29ID:???
そうでなきゃ、Zendのルートで画像指定じゃなくて
画像を送出するコントローラーを書けばいい。
0296nobodyさん2009/07/06(月) 14:51:05ID:???
View側でframeつかえますか?
どうしても画面を分割したいのですが・・・
普通できますよね?
0297nobodyさん2009/07/06(月) 14:53:10ID:Ixa1CqYv
そりゃ使えるでしょ、やったことないけど
その場合はコントローラが3つになるんだろね
0298nobodyさん2009/07/06(月) 15:00:52ID:???
Action三つ or パラメータでViewScriptを変えるだけで対応出来るのでは。
0299nobodyさん2009/07/06(月) 23:17:03ID:???
わざわざ使い肉いフレーム分割なんてやめろ
考えなおせ
0300nobodyさん2009/07/06(月) 23:18:55ID:???
まったくだ。考え直せ。
■ このスレッドは過去ログ倉庫に格納されています