Zend Framework Part5
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/11(金) 04:04:29ID:???http://framework.zend.com/
マニュアル
http://framework.zend.com/manual/ja/
翻訳状況
http://mikaelkael.dyndns.org/checker/language/details/lang/ja
http://framework.zend.com/wiki/display/ZFDEV/Japanese+(Nihongo)
バグ報告
http://framework.zend.com/issues/secure/Dashboard.jspa
API
http://framework.zend.com/apidoc/core/
前のスレッド Zend Framework Part4
http://hibari.2ch.net/test/read.cgi/php/1265721684/
0069nobodyさん
2011/03/08(火) 19:58:32.36ID:???仕事を通じて引っかかったところがあったので検証もしてみたけど、
「PHP パフォーマンスチューニング」でググれば他にも大量に出てくるからまずそこから調べた方がいい。
ちなみに俺もほとんど独学だし、先輩から教わった事なんて仕事として使うときの
エラー処理取り扱い方くらいしかない。
ただのTIPSやチューニング方法なんていちいち本に書く内容じゃないし。
こういう知識はググる、検証してみる、バグトラック見てみる、元のソース読んでみるしかない。
後者の方は時間のあるときにやってみると色々勉強になるよ。
0070nobodyさん
2011/03/08(火) 20:00:28.15ID:???0073nobodyさん
2011/03/08(火) 22:04:10.22ID:???のとおりにやると、
localhost/hoge/fuga
ってやったら勝手にHogeController::fugaActionが起動して、
"views/scripts/hoge/fuga.phtml"のテンプレートが表示されます。
特定のアクションだけテンプレートのディレクトリを変更したいんですができませんか?
コントローラ内で
$this->_helper->viewRenderer->setViewSuffix('html');ってやれば
"views/scripts/hoge/fuga.html"になります。
$this->render('foo');ってやれば
"views/scripts/hoge/foo.phtml"になります。
これを特定のアクションだけ
"views/scripts/bar/fuga.phtml"を表示させたいのです。
$this->render('../bar/fuga');ってやったら勝手に"-"に補正しやがって読めませんでした。
0074nobodyさん
2011/03/08(火) 23:23:27.36ID:???ああ、それね
専用のメソッドがあってそこで条件判断すればおk
>$this->_helper->viewRenderer->setViewSuffix('html');
について
俺はその情報は知らないからマニュアルのどのページに書いてあるのかurl張って教えて欲しい
教えてもらえるなら俺ももうちょっと詳しく教える
テイク&ギブでどうかな
0075nobodyさん
2011/03/08(火) 23:48:23.81ID:???$this->render('bar/fuga');でできたと思うが
0077nobodyさん
2011/03/09(水) 10:35:26.46ID:???007873
2011/03/11(金) 01:04:00.80ID:???script 'hoge/bar/fuga.phtml' not found in path (/**/application/views/scripts/)
こんなんなる。
この'hoge'が邪魔だった。
半分自己解決
http://framework.zend.com/manual/ja/zend.view.scripts.html
にあるsetViewScriptPathSpecで、
$this->_helper->viewRenderer->setViewScriptPathSpec(':action.:suffix')
ってやって':controller/'を消したら概ね想定通りになった。
ただこれ例外投げても継続するからパス変更後に例外出したらエラーが大変なことに。
例外発生後は継続させずにそのときだけ変更とかできないかなあ。
0079nobodyさん
2011/03/11(金) 09:44:23.59ID:???もっと簡単にできんのに
とりあえず俺74だから
0080nobodyさん
2011/03/11(金) 14:14:01.84ID:???cakeかsynfonyどちらかでweb制作会社がZFでサイト制作で使ってる程度しか見たことない
あるなら紹介してください
0081nobodyさん
2011/03/12(土) 07:00:13.43ID:???Cakeは糞だと思う。
0082nobodyさん
2011/03/12(土) 18:13:02.14ID:???Zendが作ってんのにね
008373
2011/03/16(水) 22:10:10.44ID:???where A AND (B OR C)
が作れない?
->where('`A` = ?', $a)
->where('(`B` = ?', $b)
->orWhere('`C` = ?)', $c)
0085nobodyさん
2011/03/17(木) 17:24:02.26ID:???0086nobodyさん
2011/03/17(木) 20:25:27.35ID:???0087nobodyさん
2011/03/17(木) 20:36:35.13ID:???0089sage
2011/03/20(日) 13:23:00.64ID:???http://ramat.ram.ne.jp/
それから、Pleiades に抵抗を感じる >>28 のために PDT 2.2.0 日本語化パックをおいとく。
被災者支援活動につかってちょ
0090nobodyさん
2011/03/20(日) 15:13:01.29ID:???ここのdeleteのところに
> 三番目の引数に配列の配列を提示すると、 値は自動的に引用符で囲まれてキーに入れられます。
> そしてこれらは条件として結合され、 AND 演算子で区切られます。
って書いてあるんだけど、実際に第三引数を入れても完全に無視される
メソッドも引数を二つしか受け取ってない
誰か報告よろ
0091nobodyさん
2011/03/20(日) 16:36:23.89ID:???0092nobodyさん
2011/03/20(日) 21:06:33.07ID:???どうしたらよいのでしょうか?
単にcontrollersのactionメソッド部分と、actionビューファイルを削除する
だけでよいのでしょうか。
それともzfproject.xmlを再構築するような処理が必要になるのでしょうか?
0093nobodyさん
2011/03/22(火) 13:08:01.70ID:???http://zend-framework-community.634137.n4.nabble.com/Keeping-zfproject-xml-up-to-date-with-Zend-Tool-td2526512.html
0094nobodyさん
2011/03/22(火) 21:16:54.18ID:???レスありがとうございます。
英語はよくわかりませんけど、
zfコマンドで作ったactionやviewを削除したら、zf
コマンドでzfproject.xmlを再構築する方法はない。
zf ver.2 ではその機能を実装するよきっと。
てな感じでしょう。
93様、ありがとうございました。
0095nobodyさん
2011/03/22(火) 22:43:11.53ID:???0096nobodyさん
2011/03/23(水) 04:10:06.43ID:???0097nobodyさん
2011/03/26(土) 15:01:52.93ID:???NetBeansを使ってみましたが、ZFのコマンドが簡単に
使えるようにサポートされていて、良さそうでした。
でも、ZFならZend本家のPDTが良さそうな気がしますし・・・
どちらがよいのでしょうか?
0098nobodyさん
2011/03/26(土) 15:09:29.94ID:???じゃそれ使えば良いだろw
0099sage
2011/03/26(土) 17:12:24.83ID:???つ Zend Studio
0100nobodyさん
2011/03/26(土) 18:05:40.29ID:???$front =Zend_Controller_Front::getInstance();
$front->setControllerDirectory( CONTROLLER_PATH );
$router=$front->getRouter();
$router->addRoute( 'my_router',
new Zend_Controller_Router_Route_Regex(
'mycontroller/(\w{1,25})',
array( 'controller' => 'mycontroller', 'action' => 'index' )
));
index.phpに上記のルーターを追加しました。
アクションコントローラーでは、
class MycontrollerController extends Zend_Controller_Action {
public function indexAction(){
/*
$this->getRequest()->getUserParam( 1 )がデータベースに登録されているか検証し、登録されていなければ例外を投げる
*/
〜〜〜〜〜〜〜〜〜〜〜〜〜〜
と、しています。
http://localhost/mycontroller/test/
でアクセスする場合、'test'がデータベースに登録されていれば問題ありません。
しかし、
http://localhost/mycontroller/index/test/
や、
http://localhost/mycontroller/index/test/aaaa
でアクセスした場合に例外を投げたいのです。
'my_router'ルーターを経由した/mycontroller/index/アクションへのアクセスか否かを判断できればいいと考えているのですが、どのように書けばいいのかわかりません。
お手数ですがご存知の方、ご指示をお願いします。
よろしくお願いします。
0101nobodyさん
2011/03/27(日) 00:03:25.15ID:???0102nobodyさん
2011/03/27(日) 11:48:52.26ID:???0103nobodyさん
2011/03/27(日) 12:44:03.04ID:???0104nobodyさん
2011/04/02(土) 22:45:15.46ID:???試しているのですが上手く変換されず困っています。
同じようにリソースファイルを使用してきちんと変換されている方はいますか?
ファイルへのパスはきちんと通っています。
ttp://blog3.logosware.com/archives/tag/zendframework
Znedのバージョンは1.11です。
よろしくお願いします。
0107nobodyさん
2011/04/05(火) 03:01:38.74ID:???'.;php\peer\;php\zend1.14\'のようにpeerを先に記載していたのですが、
こちらにzendが含まれ、先に読み込まれていた事が原因で新しいバージョンに
する事ができていませんでした。
ありがとう>>104 (´З`)チェッチュ
0108sage
2011/04/05(火) 11:31:30.25ID:5FZ9UmE+'php\zend1.14\;php\pear\;.'
のようにするといいと思うよ ;-)
0110sage
2011/04/05(火) 16:51:04.75ID:5FZ9UmE+http://framework.zend.com/manual/ja/performance.classloading.html
の
「現行ディレクトリは最後に定義するか、または定義しない」
0112nobodyさん
2011/04/06(水) 20:30:29.32ID:WtZWBRpOdefaultモジュール中で、エラー用のコントローラを作ろうとErrorController.phpを作り、ルーティングを
routes.default_error.route = "/error/*"
routes.default_error.defaults.controller = "error"
routes.default_error.defaults.action = "index"
routes.default_error.type = "Zend_Controller_Router_Route"
としたんですがエラーになりました。(http://example.com/error で表示すると思ったのに。)
※apacheエラーログで、
[Wed Apr 06 11:01:05 2011] [error] [client 192.168.0.3] File does not exist: /var/www/error などと言われます
原因がわからなかったので、ファイル名とルーティングをそれぞれ
ErrorxController.php
routes.default_error.route = "/errorx/*"
routes.default_error.defaults.controller = "errorx"
routes.default_error.defaults.action = "index"
routes.default_error.type = "Zend_Controller_Router_Route"
にしたところ正常にindexアクションの中身を表示しました(http://example.com/errorx)
どういう原因が考えられるでしょうか?
ErrorControllerというコントローラ名の重複は同じモジュール中にはありません。
(異なるモジュール中にはありますが、関係あるんでしょうか?)
上記のアパッチのエラーログの「File does not exist:/var/www/error」というのも、
このアプリ自体/var/www/example.com/の中で動いているのでありえないことで理由が理解できません。
すみません、ご意見お願いします
0113nobodyさん
2011/04/08(金) 05:28:10.73ID:MbleiVWqググると一つ出てくるんですが、あくまでそのブログを書いた人の考えたやり方で
標準というか、安心して使える実現法を知りたいです
0114nobodyさん
2011/04/08(金) 10:02:59.47ID:???0115nobodyさん
2011/04/08(金) 15:00:06.96ID:???書き方が悪かったです、すみません。標準と言うより定番です。
モジュールごとにエラーコントローラをわけるなんてあると便利に決まってる機能なのに
マニュアル見ても見つからなかったので、自分が知らないだけでZendFW利用者の間で
定番的によく使われてる方法があるなら知りたいなと
英語のFAQサイトでも見つけたけど、なんで機能に組み込んでないんだろう
0116nobodyさん
2011/04/08(金) 15:16:04.91ID:???やるなら1例としてモジュール名を元にsetErrorHandlerControllerでそれぞれのエラーコントローラを指定するとか
0118nobodyさん
2011/04/14(木) 18:49:46.04ID:???http://www.example.com/info.html?123
の123を取得したくて
$route =new Zend_Controller_Router_Route_Regex(
'info.html\?(\d+)',
array(
'controller' => 'info',
'action' => 'index'
)
);
とかいたのですがマッチしません。
なぜでしょうか?
0119nobodyさん
2011/04/14(木) 19:24:11.69ID:???0120nobodyさん
2011/04/14(木) 23:05:38.43ID:???すみません。
マッチしないという言い方が正しくありませんでした。
ディスパッチエラーになって/info/iindx/が表示されないのです。
なぜでしょうか?
0121nobodyさん
2011/04/14(木) 23:08:54.32ID:???0124nobodyさん
2011/04/15(金) 10:29:45.09ID:???関係ない箇所だけど
関係ない箇所だけど
0125nobodyさん
2011/04/17(日) 20:03:37.97ID:???するのは、よくないのでしょうか?
(ZFより先にIDEを導入するべき?)
0126nobodyさん
2011/04/17(日) 20:48:41.28ID:???でも入力補完とかリアルタイムの構文チェックに慣れると
普通のエディタには戻れなくなる
0127nobodyさん
2011/04/18(月) 18:04:20.46ID:???0128nobodyさん
2011/04/22(金) 21:27:19.03ID:V7g6SPUo・/authContorller.php
public function denyAction() {
Zend_Layout::getMvcInstance()->setLayout('message');
if ($this->getRequest()->isXmlHttpRequest()) {
$this->_helper->getHelper('viewRenderer')->setNoRender();
$this->_helper->getHelper('layout')->disableLayout();
0129nobodyさん
2011/04/22(金) 21:30:49.02ID:V7g6SPUo$this->getResponse()->setBody(Zend_Json::encode($return));
} }
・/auth/deny.phtml
<div><?php echo $this->translator('auth_deny_g'); ?></div>
とあります
0130nobodyさん
2011/04/22(金) 21:32:42.49ID:???回答:ありますね
0131nobodyさん
2011/04/22(金) 23:25:41.71ID:V7g6SPUo$return = 〜 ('auth_deny_g')); の1文は一体何を意味しているのでしょうか?
messageに変数を割り当てているのでしょうが、translator('auth_deny_g')の値が何を意味するのか分かりません
どこかにauth_deny_gに該当する値、又ファイルが存在するのでしょうか?
2chの本文の長さ規制で変な連投になりすみません
0132nobodyさん
2011/04/23(土) 10:50:07.38ID:???'auth_deny_g'ってキー使って値を引っ張ってんでしょ。
translatorはZend_Translatorだよな。
んで、これはZend_Formの認証失敗を通知するメッセージの出力じゃねーの?
周辺が解らなすぎて答えようがねえよ。
0133nobodyさん
2011/04/23(土) 11:59:03.01ID:???0134nobodyさん
2011/04/23(土) 12:24:47.86ID:???0135nobodyさん
2011/04/23(土) 14:34:34.73ID:???その500ページの内容による。
それすら無しに、ZFとCakeって比較は馬鹿げてる。
内容がわかってもその比較は馬鹿げてて、
WordPressの方がいいってのもあり得る。
0136nobodyさん
2011/04/23(土) 15:44:45.60ID:???0137nobodyさん
2011/04/23(土) 16:44:02.43ID:???ギャグで返す以外にどうしろとw
0138nobodyさん
2011/04/24(日) 00:32:37.59ID:???皆この位のコードとか書いてアプリケーションとか作ってるの?
それともやっぱこのレベルは難しい?
0139nobodyさん
2011/04/25(月) 14:15:53.46ID:???あんたの方がよっぽど、ソフトを使ってみただけの実務の出来ない技能屋って感じがするけどなあ。
フレームワークとCMSを敢えて提示し得る問いだってのは明らかじゃん。
0140nobodyさん
2011/04/25(月) 14:57:36.93ID:???0142nobodyさん
2011/04/26(火) 00:14:56.20ID:???ただし、作れる人は他の事やってる
0143nobodyさん
2011/05/01(日) 18:55:39.12ID:???これってどうやったらxhtmlになるの?
0146nobodyさん
2011/05/09(月) 18:07:17.19ID:9NI2nLcl自分のアプリケーションからつぶやきを投稿するフローで、
TwitterAPI認証画面への遷移・認証成功後、アクセストークンを取得して戻って来たら、
以下のように クラスを実行する必要があると思うんですが、
$twitter = new Zend_Service_Twitter(array(
'username' => 'hogeUser',
'accessToken' => unserialize($_SESSION['TWITTER_ACCESS_TOKEN'])
)
);
$twitter->status->update("アプリからつぶやきました");
このパラメータの 'username'って誰のユーザーネームを入れたら良いんでしょうか?
考えられる候補は以下の3つあって、
1)アプリケーションそのもののユーザー
2)そのアプリケーションを利用してるユーザー(twitterAPIにID/passwordを入力した、そのIDそのもの)
3)その他、だれでもいい、実在しないユーザでもいい
全てを試してみたものの全部エラーなく実行できてしまいました。
実際の投稿者(つぶやいたユーザ)は全部、(2)のapiログインしたユーザです。
第二引数のTWITTER_ACCESS_TOKEN自体が、このユーザの権限で作ったものだから当たり前かも知れないですが、
ではusernameって何の為にあるパラメータなんでしょうか?
マニュアル読んだものの英語なのでよくわからなくて、色んなブログ記事を読んでも
このユーザーがなになのか、ハッキリ書いていません。
すみません、アドバイスお願いします
0147nobodyさん
2011/05/09(月) 20:12:17.36ID:???0148nobodyさん
2011/05/09(月) 21:28:56.06ID:???本当にそこまで試して全部結果が同じなら、
なんかの互換確保用か、名残じゃねえの?
場所ははっきりしてんだし、ソース追っかければいいじゃない。
0149146
2011/05/09(月) 23:03:42.09ID:???どうもです。言われた通りソースを見てみました。
すると、HttpClientの生成やその先の処理にusernameは全く使ってませんでした。
setUsername();とgetUsername();の2つのメソッドがあるだけで、
このHttpClientのユーザの名前を入れる/引き出す処理に使うだけみたいでした。
なので、usernameに指定するのは(2)のアプリケーションユーザ名のようです。
パラメータの配列からusernameキーそのものを消しても動いたくらいで…
とりあえず解決とします。ありがとうございました。
0150nobodyさん
2011/05/10(火) 00:43:33.42ID:???Basic認証時代の名残かもね。
当時コンストラクタに$username, $passwordが引数で渡されてたから
0151nobodyさん
2011/05/10(火) 11:31:18.60ID:???OSSだとよくあるよね。このフラグ使ってねーのかよ!って。
ドキュメントに記載は無いけど、ソースのコメントにはあったりするし。
ZFぐらい大きくても、個々のライブラリのコミッタって少ないだろうし、
まあソース見たほうが早いってこった。
0152nobodyさん
2011/05/10(火) 17:08:28.72ID:???tomatoCMSはrequire_once等を使用せずに別ファイルのクラス等を呼び出していますが、これは何故なのでしょうか?
どういう仕組みでこのように出来るのでしょうか?
0153nobodyさん
2011/05/10(火) 19:08:58.78ID:???0154nobodyさん
2011/05/11(水) 13:27:38.91ID:???0155nobodyさん
2011/05/11(水) 21:41:01.28ID:28BHzc0+君は PHP 使っているの?だったらすぐやめて .net や delphi に乗り換えたほうがいいよ :-p
0156nobodyさん
2011/05/11(水) 23:26:29.06ID:???あれは情報が少ない
やるだけ損だ
0159sage
2011/05/14(土) 06:53:07.55ID:???「高品質」というセールストークに反応したのだろうか。:-p
http://framework.zend.com/manual/1.5/ja/introduction.overview.html
最新はコッチ
http://framework.zend.com/manual/ja/introduction.overview.html
0161nobodyさん
2011/05/14(土) 12:15:58.59ID:???0163nobodyさん
2011/05/15(日) 15:26:59.62ID:???0164nobodyさん
2011/05/26(木) 00:37:23.77ID:HR+pqHzo管理画面状態の時も他ユーザが閲覧してるプロフィール画面の時もURLを
http://yamada.hogehoge.jp/ という形で同じにしたいです。
この条件を満たすとき、ルーティングから画面切り分けまでのロジックはどうすべきでしょうか?
前提:管理画面モード(ログイン時)では、専用のセッションにユニークのユーザ名(yamada)を入れてまわる
1:とりあえずルーティングはdefaultモジュールの閲覧モード(profileコントローラ)を設定
2:profileコントローラのコンストラクタでzend_authの検証結果を見る(管理画面モードであると確認)
3:管理画面用セッションからユーザ名とurlのパラメータ「yamada」を比較
4:同じだったら、管理画面用mypageモジュールとアクションに転送
こんな感じかなと思ったんですが、なんか変と言うか。
4の転送ってのも、毎回毎回/module/default/***Controller.phpから/module/mypage/***Controller.phpに
切り替えるのかという気がするし、もっと良いやり方があるのではって思ってしまいます。
一番の解決策は管理画面モードの時は http://mypage.hogehoge.jp
閲覧用のページの時は http://yamada.hogehoge.jp
とハッキリわけることだとわかってるんですが、そうしたくないなと思いまして…
別の方法として、閲覧モードの時も管理画面モードの時も同じモジュール同じコントローラを利用し、
認証チェックの結果次第で管理画面モードの時のみ更新系機能を組み込んで
viewを切り替えることを考えもしたんですがそれもおかしいし…
(閲覧モード時に使わない機能とアクションが大量にあるというあたりが)
どうするのが良いでしょうか。変な質問ですみません
0166164
2011/05/26(木) 01:36:57.62ID:???単純に見映えがいい?カッコイイ?からというしょうもない理由なんですが
こういうルーティングの機能があるから使ってみるか、程度の…
サブドメインを利用してること自体が問題になるんでしょうか? そんなことないですよね?
0168nobodyさん
2011/05/26(木) 05:24:34.82ID:???>>166
ルーターを作って username.xxxxx の場合は、
mypageモジュール内のコントローラを呼ぶ。
mypageモジュール内でセッション情報の確認を行い、
不正な場合はdefaultにリダイレクトにすればいい。
■ このスレッドは過去ログ倉庫に格納されています