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/
0229nobodyさん
2009/06/11(木) 14:08:50ID:v8Ky+P1Jすぐ処理が転送してくれません。
例えばController_Actionのメソッドとして、init(),とloginAction()
があるとします。
init()でDBの接続処理を行い、接続できなかったときにエラーページに
飛ばしたいのにloginActionが実行されてしまいます。
#_forwardにはreturn をつけて書いてます。
init()からすぐ別コントローラに飛ばすにはredirectじゃないとだめなんでしょうか
みなさんどうしてますか
0230nobodyさん
2009/06/11(木) 14:46:49ID:???で、おれなら、DB接続エラーはコントローラーにはハンドルさせないで例外を投げる。
initは初期化処理のみにしておけば、通常処理用のエラー処理は入ってこないはず。
が、どうしても、アクション前条件判定でエラーコントローラーに飛ばすなら、
preDispatchで_forwardする。
0231nobodyさん
2009/06/14(日) 17:33:28ID:???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:???おれは1.8.3だけどそんなエラー出ない。
0233nobodyさん
2009/06/14(日) 19:48:51ID:???Zend_Date使ってるのが影響したんだろうと思うんですけど
0234nobodyさん
2009/06/16(火) 20:50:22ID:hxQFGTlU0235nobodyさん
2009/06/16(火) 22:08:21ID:???あなたも翻訳に参加しよう
http://d.hatena.ne.jp/satoruyoshida/20090603/1244035139
0236nobodyさん
2009/06/17(水) 12:14:05ID:???再度ZendFrameworkを触ってみようと思います。
皆さんよろしくお願いします。
0237nobodyさん
2009/06/17(水) 13:55:51ID:lVB38oSh04WebServerとの組み合わせで使用していました。
今出ているZend Server?を試してみましたが、Apache前提みたいです。
0238nobodyさん
2009/06/17(水) 17:22:47ID:???このページで
モデル→データマッパ→ZendDbTable
となってるんですが、
モデルやデータマッパをスクリプトから自動生成する機能はないんでしょうか?
0240nobodyさん
2009/06/18(木) 20:04:08ID:5iF8/wzr普通にdocumentroot以下に置いて、phtmlには src="/img/hoge.gif"とかすべき?
0242nobodyさん
2009/06/18(木) 23:20:18ID:???documentroot以下は同じだが、
俺も最初はそのsrc=のように絶対指定していたのだけど、
<base href="http://www.example.com/..../" />
ってして、相対指定にした。
でないと、開発環境と本番環境の相違を吸収しにくい。
baseタグなんてそれまで使ったことなかったから、すっかり忘れていたわ。
0243nobodyさん
2009/06/19(金) 00:54:44ID:???ありがとうございます
>>242
そのbaseタグ使う方法良さそうですね
もしくは基準のパスを定数でもたせるのも変更時便利かもしれない
ありがとうございました
0244nobodyさん
2009/06/19(金) 11:55:12ID:DHeb1GYGUTF8だと日本語が思いっきり3でカウントされる
0245nobodyさん
2009/06/19(金) 12:16:16ID:???0246nobodyさん
2009/06/20(土) 13:15:25ID:???これは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すみません
0248246
2009/06/20(土) 13:56:55ID:sayu7hyr→ www.hoge.com/index/hoge/ は表示する
別のアクションコントローラを表示できないようです
なぜだろう。。
0249nobodyさん
2009/06/20(土) 17:52:12ID:???でアクセスした場合はどう?
0250246
2009/06/20(土) 18:03:33ID:sayu7hyrご回答ありがとうございます
試してみましたがダメでした。以下変でしょうか?
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:???0253nobodyさん
2009/06/22(月) 13:48:28ID:???0254nobodyさん
2009/06/22(月) 13:55:24ID:???http://smarty.net/foreach
0255nobodyさん
2009/06/22(月) 15:51:12ID:???http://www.php-seed.net/blog/archives/370
こういう問題でもなく?
0256nobodyさん
2009/06/23(火) 17:52:02ID:fbX2StFR「自動転送がループしています」と出ます
<?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:U9kBq3jCBootstrapに入れるのは何か違う気がして、、
0258nobodyさん
2009/06/23(火) 22:52:11ID:???0259nobodyさん
2009/06/23(火) 23:19:57ID:U9kBq3jC他のコントローラの関数を参照する関数があればいいんですが
IndexControllerから
TestController::getForm()を参照したいです
0260256
2009/06/23(火) 23:33:48ID:fbX2StFRZendFW以前の問題で話になんね、って感じなんでしょうか?
それならそれで、ご指摘いただけると有り難いです。
一方的にすみませんがよろしくお願いします
0261nobodyさん
2009/06/24(水) 00:46:07ID:???そのコードだけじゃ情報が足りなさすぎる。
config中にルータの設定とか書いて無い?
一度config.iniを空っぽにして試してみれ。
0262256
2009/06/24(水) 03:05:26ID:lk5E+v4fありがとうございます。config.iniが原因とは思いませんでした
なかで、データベース接続情報を書いていたんですが、
パスワードに ! を含んでいて、これが原因だったようです(消したら動きました)
!は使えないってことでしょうか、とりあえずPW変更して対応します。。
0263nobodyさん
2009/06/24(水) 08:41:21ID:???http://www.nicovideo.jp/watch/1245748338
0265nobodyさん
2009/06/27(土) 11:34:29ID:LkjCp9rV0266nobodyさん
2009/06/27(土) 19:24:02ID:62AeSP23関数は使えないようにしたいと思います。
なんか良い方法ないですか?
0267nobodyさん
2009/06/27(土) 21:59:13ID:???⇒ 情報サイト http://sho-zai.com/index.html
0268nobodyさん
2009/06/29(月) 14:25:46ID:???0269nobodyさん
2009/06/29(月) 14:28:17ID:dN5c2Pu70270nobodyさん
2009/06/29(月) 14:46:32ID:???'foo',
'',
array(
'label' => 'bar',
'style' => 'width:150px',
)
);
こんな感じで幅を指定できないかなと思ったのですが、できません?
0271nobodyさん
2009/06/29(月) 17:11:46ID:???0272nobodyさん
2009/06/29(月) 19:08:49ID:???0273nobodyさん
2009/06/29(月) 22:04:00ID:???普通に書けばええがな。
0274nobodyさん
2009/06/29(月) 23:31:03ID:???Adapterを作ればOK。
>>266
Zend_Viewでは実質不可能。
Smartyなりのテンプレートエンジンの導入を。
0275nobodyさん
2009/06/30(火) 10:36:03ID:AIJgPj0k0276nobodyさん
2009/06/30(火) 16:00:28ID:???どうすればいい?
0277nobodyさん
2009/06/30(火) 16:06:01ID:???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だし
Webはスケールアウトすればいいじゃん、的な
0282nobodyさん
2009/07/02(木) 03:28:49ID:???マスターとかになるんですかね?
0283nobodyさん
2009/07/03(金) 02:02:06ID:???どうすればいいですか?
0284nobodyさん
2009/07/03(金) 04:37:06ID:???http://framework.zend.com/manual/ja/zend.controller.html#zend.controller.quickstart
0285nobodyさん
2009/07/04(土) 17:45:54ID:???全データを配列にぶっこんでから、カウントしてくれるだけだよね?
こういうのってPHPのパフォーマンス的にどうなの?
ちゃんと、count(*)関数使ったSQLで取得した方が良いの?
0286nobodyさん
2009/07/04(土) 17:55:34ID:???そういうアホみたいな処理が多い
0287nobodyさん
2009/07/04(土) 18:10:48ID:???自分は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:???0292nobodyさん
2009/07/06(月) 02:41:57ID:???mod_rewriteの対象にしてるなぁ
0293nobodyさん
2009/07/06(月) 06:57:58ID:AIqh19Fa>>292
ドキュメントルート上にないファイルなので困っています。
なければコントローラ経由で出力します
0294nobodyさん
2009/07/06(月) 07:02:45ID:???ドキュメントルート上になくても、mod_rewriteでもAliasでもいいやん
0295nobodyさん
2009/07/06(月) 07:04:29ID:???画像を送出するコントローラーを書けばいい。
0296nobodyさん
2009/07/06(月) 14:51:05ID:???どうしても画面を分割したいのですが・・・
普通できますよね?
0297nobodyさん
2009/07/06(月) 14:53:10ID:Ixa1CqYvその場合はコントローラが3つになるんだろね
0298nobodyさん
2009/07/06(月) 15:00:52ID:???0299nobodyさん
2009/07/06(月) 23:17:03ID:???考えなおせ
0300nobodyさん
2009/07/06(月) 23:18:55ID:???0301nobodyさん
2009/07/07(火) 04:09:51ID:???0302nobodyさん
2009/07/07(火) 06:35:31ID:???0303nobodyさん
2009/07/07(火) 06:49:20ID:???0305nobodyさん
2009/07/07(火) 17:54:40ID:???また、できる場合、どう参照すればよろしいでしょうか?
0306nobodyさん
2009/07/07(火) 18:02:51ID:???$this->view->foo;
0307nobodyさん
2009/07/07(火) 20:55:21ID:dsERj2eFexample.com/controller/action/name/value
ではなくaction == indexとして省略して
example.com/controller/name/value
のように指定する方法はありますか?
後者だとnameActionを探しに行ってしまいます
0308nobodyさん
2009/07/08(水) 13:32:23ID:???詳しくはマニュアルで。
http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.routes.standard
0309nobodyさん
2009/07/08(水) 23:27:36ID:5XpF0jdH_forwardのようにそのアクションを呼び出すのではなく、関数の返り値が欲しいです。
0310nobodyさん
2009/07/08(水) 23:50:56ID:???0311nobodyさん
2009/07/09(木) 00:12:48ID:JLJTWxg20312nobodyさん
2009/07/09(木) 00:18:29ID:???0313nobodyさん
2009/07/10(金) 17:30:13ID:???ビューヘルパーのaction使えばできるんじゃね?
で、デレツン行っていいかな。
コントローラーからコントローラーを直接呼ぶとか、
ビューからコントローラー呼ぶとか、キモイこと考えんなやw
コントローラーを呼ぶときはdispatcherとリクエスト使いましょう。
0314nobodyさん
2009/07/10(金) 18:12:04ID:???無駄に太り見通しが悪くなって苦労するよね、今の俺みたいに(´・ω・`)
ついつい、このコントローラ共通の処理だからと、アクションじゃないメソッドを増やしちゃうが...
0315nobodyさん
2009/07/10(金) 18:19:43ID:???最近、やっとわかってきたけど。
0316nobodyさん
2009/07/10(金) 18:44:08ID:xlLyB0YiSearchActionなんてのにZend_Formを返すgetForm()なんてのがあるとします。
IndexControllerからそのフォームをトップページで表示したい場合はどうすれば良いんですか?
何かおかしいこと言ってますか?
0317316
2009/07/10(金) 18:45:31ID:xlLyB0Yi0318nobodyさん
2009/07/10(金) 18:56:13ID:???だったらそれがそもそもおかしい。
0320nobodyさん
2009/07/10(金) 21:24:14ID:???ZFだと、formsっていうところにモジュール別のフォームを集めておくのがデフォ。
IndexControllerで検索フォームを使いたいなら、IndexControllerのgetFormで、
それをインスタンス化するという簡易的な手もある。
getForm('search')とか。まぁ、しかしそりゃ汚くなる。
ヘルパーかプラグインリソース(Zend_Application)にするところだろうな。
0321316
2009/07/10(金) 23:25:57ID:xlLyB0Yi何がおかしいんでしょうか。
xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
codezineだかのサンプルにもそういった実装がありました。
>>319
helperですか。。
ちょっと考えてみます。
>>320
formsのあたりをもう少し詳しくお聞きしたいです。
static functionとしてgetForm()を定義することも考えましたが、
$thisを使いたい場面もあり、それはあきらめました。
Zend_Applicationで大半のことはやっていますが、
使わないコントローラに対してもフォーム分のメモリを確保するのはどうかなぁと思ってしまいます。
ある程度の規模のサーバーで運用していますが、ZF自体が膨大ですのでできるだけいらない処理は省きたいのです。
0323nobodyさん
2009/07/10(金) 23:35:55ID:???>xxActionしか内部に作っちゃいけないなんて言う制約ありません。use-at-willです。
制約ではなく、設計を指摘してるのでしょう。
他から参照されるメソッドをSearchControllerに定義する事自体がおかしい、と。
0324316
2009/07/10(金) 23:46:24ID:xlLyB0Yiならそう書いてください。
2行目は余計です。
>>323
検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
0325nobodyさん
2009/07/11(土) 00:43:24ID:???0326nobodyさん
2009/07/11(土) 00:57:28ID:???> 検索の主体(フォーム出力、検索実行)がSearchControllerにあるのでその中で実装するのが自然かなと思ったんですが、
全然自然じゃない。
> 他のコントローラで参照することを考えれば分けた方が良いかもしれませんね。
他のコントローラから参照されることがなくても自然じゃない。
> もしくは出力されるフォームのHTMLだけを直接Viewに書いちゃうかどっちかですかね。
「どっちか」って「フォームHTMLだけViewに」とどれ?
ZFって一応MVCモデルのフレームワークってことなんだけどね。
0327nobodyさん
2009/07/11(土) 01:07:14ID:???結局それ念頭に作られていてこの後も拡張されて行くから
自分で解釈を考えるよりも元々のZendの意図をくみ取る方が重要だったりする
なので迷ったら本家MLのログ検索で良い例題を探してみて、あれば真似する、
というアプローチがよいと思う。出来たてなFWだから野良の情報はけっこう微妙
0328nobodyさん
2009/07/11(土) 01:26:56ID:???コントローラの行数を何行に収めるべきか、とか
ひいてはサイト全体をどう設計して行くべきか、とかが大体イメージ出来る
http://framework.zend.com/manual/ja/coding-standard.php-file-formatting.html
B.2.3. 1 行の長さ
1 行の長さを 80 文字までにすることを目指しましょう。
すなわち、 コードの長さを現実的な範囲で 80 文字までにおさめるよう
努力すべきです。 しかしながら、場合によっては少々長くなってしまっても
かまいません。 PHP コードの行の長さは、最大 120 文字までにするように
しましょう。
0329nobodyさん
2009/07/11(土) 01:31:14ID:???全然自然じゃないわ
■ このスレッドは過去ログ倉庫に格納されています