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

Zend Framework Part3

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/
0893nobodyさん2010/01/16(土) 22:57:15ID:???
>>892
本で勉強するのであれば、主な3つのFWのうち、Zendが圧倒的にいいと俺は思うね
Cakeとか全然じゃん
まぁ、そんな難しくないし、マニュアルコンテンツ自体も非常に少ないけどね
ZFは本はしっかりしているが逆にマニュアルは一番内容量が多く、他の2つよりもFW自体濃い
0894nobodyさん2010/01/16(土) 23:00:50ID:???
何が逆なんだ
0895nobodyさん2010/01/16(土) 23:22:06ID:???
すみません、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はどれとも一致していません
この第一引数のルート名というのは何を設定し、何の為のものなのでしょうか?

0896nobodyさん2010/01/16(土) 23:35:50ID:???
ルートって根底って意味だぞ
コントローラでもアクションでもなくてその下の階層
0897nobodyさん2010/01/16(土) 23:54:10ID:???
>>896
ごめんなさい、せっかくお答えして頂いたのにおっしゃっている意味がわかりませんでした
下の階層とはどういう事でしょうか?
/controller/action/ココ という事でしょうか?
それか最初の例で言えば、ArticleController.phpの中という事でしょうか?
少し混乱してきました(恥)

自分は今も調べていて思ったのですが、例えば2つ目のコードで言えばaddRouterの'user'は任意で決めたもので、それを何かの関数で参照とか出来るのかなとも思ったのですが、そういうような記述もどこにもされていませんでした

'user'は何を意味しているのでしょうか?
どこかのコード内に記述されているのでしょうか?

マニュアルのほかにもこのサイト(http://codezine.jp/article/detail/2226?p=2)などを参照しましたが分かりませんでした
08988972010/01/17(日) 00:20:59ID:???
ココ(http://thaliana.myhome.cx/pctips/php_zend_mvc.php)とか見ても、特別addRouter()の第一引数の意味はなさそうな感じなのですが、
やはりこの第一引数のルート名というのは自分で適当に付けた名前で、自分でこういうルートをフロントコントローラ内に追加しましたという確認をする為だけに付けた名前(例えばxmlでいう接頭辞とか)なのでしょうか?
それともやはり意味があって、何かの為に指定したものなのでしょうか?
0899nobodyさん2010/01/17(日) 00:47:56ID:???
もうなんか日本語めちゃくちゃ
0900nobodyさん2010/01/17(日) 00:49:21ID:???
addRouterの引数ってRouterだろ
0901nobodyさん2010/01/17(日) 01:34:24ID:???
>>897
読解不能・・・。
混乱してるのは分かるけど、句読点くらいちゃんと使おうよ。
'user'はユーザ定義のルーティング名。
もう1度マニュアルをよく読むべし。

http://framework.zend.com/manual/ja/zend.controller.router.html
0902nobodyさん2010/01/17(日) 14:55:59ID:???
プログラミングセンスないな。
転職したほうがいいと思う。
0903nobodyさん2010/01/17(日) 14:58:50ID:???
マニュアルを読めない新人、地図を渡せない玄人ってとこか。
09048972010/01/17(日) 16:30:48ID:???
ごめんなさい。
確かに書いてて自分でも良く分かってはいませんでした(苦笑
自分が分からなかった事を書き直します。

$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()の第一引数は何を意味しているのかなと疑問に思い質問させていただきました。
0905nobodyさん2010/01/17(日) 16:35:48ID:???
この程度なら、マニュアルよりソース見た方が理解早いわな
897の言ってることも分からなくもないだろ。
addRouteの第一引数はgetRouteやremoveRouteメソッドから察するに
他のRouteと識別するものなんだろうけど
そもそもルーティングは事前に設計されてるもので
設定から読み込まれたRouteを追加したあとで
動的に取得したり削除したりするケースがあるのかってことだろ
0906nobodyさん2010/01/17(日) 17:59:36ID:kUgFmiiy
>>904
確かにaddRoute()内の $this->_routes[$name] = $route; を
$this->_routes[] = $route; にすりゃ第一引数(識別子)なしにできるんだろうけど、
'default'という名前の Route がデフォルトで定義されている。

で、'default' が気に入らないから消したいって時に、キーとして指定しやすいからって理由だと思う。
09078972010/01/17(日) 18:34:04ID:???
>>905-906
返答ありがとうございます
段々まだ曖昧ですが分かってきました
0908nobodyさん2010/01/17(日) 22:04:37ID:???
んったく、話を聞かないし地図も読めねーのかよ。
0909nobodyさん2010/01/18(月) 08:13:43ID:???
地図って何だ?
0910nobodyさん2010/01/22(金) 03:59:32ID:???
ZendFrameworkのMVCの構造を生かしつつ、MySQLをデータベースに使用しているのですが、Modelの設計がよくわかりません。
なにかMVC構造+MySQLの参考になるようなドキュメントなどはありますか?

ぐぐって出てくる解説ページではDBへの接続やDBから取得、追加、削除などもコントローラに書いているようなのですが、
これらは本来Modelに書くべきことなんじゃないかと思っているのですが、ZendFrameworkでは違うのでしょうか?
0911nobodyさん2010/01/22(金) 04:06:00ID:???
Modelを操作してんでないの?
0912nobodyさん2010/01/22(金) 07:42:22ID:???
>910
基本的には、モジュールディレクトリにmodelsとmodels/DbTableを作ってそこにモデルを格納するのが基本
サンプルは動作確認を取りやすいからそう書いているだけで、コントローラでDB操作をするのが本筋じゃない。
他のサンプルもそういうもんだと思ってみた方がいいよ。

俺のお気に入り
http://www.slideshare.net/weierophinney/architecting-ajax-applications-with-zend-framework

実際には、ZFでのモデル実装は自由そのものだから好きに書けばいい。
Modelの設計がわからなかったら、エリックのDDDを通読することをお勧めするよ。
0913nobodyさん2010/01/22(金) 15:41:24ID:???
現在の実行されているアクションがforwardされたかどうか調べるにはどうすればいいですか?
forwardする度にinit内の処理が実行されて困っています。
0914nobodyさん2010/01/22(金) 16:34:48ID:???
initは必ず実行されるべきコードだけ書くものだろ?
0915nobodyさん2010/01/22(金) 19:16:57ID:???
>>914
だって、1回だけの実行にしたいだもん
0916nobodyさん2010/01/23(土) 02:02:45ID:???
馬鹿にはzendは無理。
0917nobodyさん2010/01/23(土) 09:33:41ID:???
利口な奴は他のFWにいく
0918nobodyさん2010/01/23(土) 10:14:46ID:???
ZFは規模がでかすぎるしね
一般的な人はCakeとかもっと簡単なFWの方がいいだろうね
それかPEAR使うとか
フロントコントローラだけでも最初「ウッ」ってくるのに、DBだけでも他と比較にならんほどマニュアルの量多いしw
Cakeなんて比較にならんよw
最初、マニュアルの量の多さに読む気が失せたw

だから、>>917の言っている事は一理あるように俺は思う
0919nobodyさん2010/01/23(土) 11:42:16ID:???
>>916-918
またくだらないけなし合いが始まった
0920nobodyさん2010/01/23(土) 12:12:31ID:???
>>918
ウッってくるのは初心者だからじゃね?
0921nobodyさん2010/01/23(土) 13:50:15ID:???
マニュアルを馬鹿正直に全部読もうとするのは初心者だな。
サンプルコードとAPI流し見すればいいだろ
0922nobodyさん2010/01/23(土) 16:21:33ID:???
Zendの規模がでかいってどういうことだ
小さいアプリを作るのであれば開発者はどのフレームワーク使ってもFWの規模を気にすることなんてないだろ
0923nobodyさん2010/01/23(土) 22:23:26ID:???
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();
0924nobodyさん2010/01/24(日) 00:06:10ID:???
無理やり解決(?)しました

やりたくはなかったのですがControllerでRequestに応じて
$viewRenderer->setViewScriptPathSpec(':controller/:action.:suffix')を
書き換えたらすんなり行きました
0925nobodyさん2010/01/24(日) 18:59:59ID:???
プラグインで切り替えるようにしてもいいだろうけど。
解決したんならいいわ
0926nobodyさん2010/01/24(日) 23:11:27ID:???
全ての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"));

よろしくお願いします
0927nobodyさん2010/01/26(火) 10:29:39ID:???
アレ?
Zendの公式ページ変わった?
今までフロントコントローラだと12章とかあったけど・・・
なんかバージョンの選択も出来るようだし
ってか、1.10になったんか・・・
1.9使ってたけど、次は2.0かなとか期待してたのに・・・
0928nobodyさん2010/01/26(火) 12:19:14ID: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というのは一度も出てきていないのが急に出てきて、どういうことなのかと疑問に思いまして
0929nobodyさん2010/01/26(火) 13:59:11ID:???
ドキュメントの意図についてはMLとかで直接聞いた方がいいんじゃない?

で、ホスト名のルーティングについてはhostnameルートを使う。
使わない場合はどのホスト名でも一致するのが仕様
0930sage2010/01/29(金) 01:53:29ID:???
なんで、最新安定版が出たのにみんな盛り上がらないの?
「Zend Framework を学ぶ」ってあるよ。
0931nobodyさん2010/01/29(金) 01:59:15ID:???
マニュアル随分と詳しくなったね
0932nobodyさん2010/01/29(金) 09:05:45ID:???
ただし、上にも書かれているけど、何章と出なくなったのはめんどくさいな
仲間に「何章の何項目めを参照」とか言ってたし、それをメモとかに書き込んでいるし
0933nobodyさん2010/01/29(金) 11:00:53ID:???
>>931
まだ読んでないんだけど、具体的にどんなところが詳しくなったの?
0934nobodyさん2010/01/29(金) 11:01:32ID:???
読めよw
0935nobodyさん2010/01/29(金) 13:50:18ID:kJXcpR0Q
Zend_Form_Element_MultiCheckboxでチェックボックス作ったときに、
一番下のチェックボックスをクリックしてオンにすると一番上のチェックボックスも一緒にオンになったり、
二番目のチェックボックスをクリックしてオンにすると一番上のチェックボックスも一緒にオンになったり、
二番目のチェックボックスをクリックしてオフにすると一番上のチェックボックスがオンになったりと、
挙動がおかしいんだけど、この挙動を正常にするにはどうしたらいいですか?
0936nobodyさん2010/01/29(金) 16:32:26ID:???
>>931
変わったっけ?
俺全然違いが見つけられないんだけど・・・w

ってか、誤植の部分がまだ直ってなかったりしてるな
コードの誤植、日本語の誤植など
0937nobodyさん2010/01/29(金) 21:00:15ID:???
1.6の頃から比べたら変わったけど去年1.8で作ったときに比べてはそんなに変わってない気もするな
0938nobodyさん2010/01/30(土) 22:49:31ID:/kADIv2E
ゼンドとCI、どっちが使いやすい?
速さ込みで考察しれ。
0939nobodyさん2010/01/30(土) 23:39:26ID:p3ZI+mNg
ChIitan かな
0940nobodyさん2010/01/31(日) 10:13:08ID:???
>>936
気づいたことがあれば、Issue Tracker でレポートよろしく〜
ttp://framework.zend.com/issues/secure/Dashboard.jspa
0941nobodyさん2010/02/01(月) 21:12:18ID:???
ZendFrameworkでforwardが期待通りの動きをしてくれません。

編集画面(editAction)→検証(validateAction)→エラーの場合編集画面(editAction)という形にしたいんだけど、
editアクションにforwardしてくれません。どうすればいいでしょうか?
0942nobodyさん2010/02/01(月) 21:40:50ID:???
仕様通りに書く
0943nobodyさん2010/02/01(月) 21:47:05ID:???
エスパーじゃないからお前がどう書いたらそうなったのかなんて知らん
0944nobodyさん2010/02/01(月) 22:57:43ID:PP9IaUHC
機内にエスパーの方はいらっしゃいませんかー
0945nobodyさん2010/02/02(火) 00:15:39ID:???
$this->_forward("edit",null,null,array("id"=>$id));
なぜゆえ、これじゃダメなん?
0946nobodyさん2010/02/02(火) 00:17:38ID:???
いいんじゃない?
0947nobodyさん2010/02/03(水) 11:13:50ID:???
馬鹿にはzendは無理。

http://pc11.2ch.net/test/read.cgi/php/1222645553/
【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://pc11.2ch.net/test/read.cgi/php/1068190843/
親切な人が初心者にPHPの関数を使い方を教える
http://pc11.2ch.net/test/read.cgi/php/1209137730/
PHP初心者勉強会やらんかね!
http://pc11.2ch.net/test/read.cgi/php/1172328149/
2ch有志がPHPフレームワークを作るスレ
http://pc11.2ch.net/test/read.cgi/php/1253912143/
【PHP】PHPフレームワーク総合スレ14
0948nobodyさん2010/02/03(水) 13:55:21ID:???
無限ループしてるんじゃないの?
0949nobodyさん2010/02/04(木) 11:04:17ID:???
zend_formで複数のフォーム要素を並べることってできる?

tel: □-□-□

↑こんな風に3つ作りたいんだけど
やり方がわからない。
教えてほしい。
0950nobodyさん2010/02/04(木) 11:07:26ID:???
その3つをDisplayGroupに入れて、DisplayGroupにViewScriptデコレータを適用するとか
0951nobodyさん2010/02/04(木) 13:21:23ID:???
>>950
ありがとう!
試してみる
0952nobodyさん2010/02/05(金) 22:01:54ID: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ページ目の時は正しい結果を返します。
何が原因なんでしょうか?

続きます
0953nobodyさん2010/02/05(金) 22:03:03ID: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で動かしています
0954nobodyさん2010/02/05(金) 22:42:18ID:???
Zend_Rest_Clientで質問なのですが、タイムアウトが10秒の固定で
変更が出来なさそうなので困っています。
クラスを派生させてHTTPを叩く周りに手を入れようとも思ったので
すがZendのコードを見ても上手い具合にHTTP周りはprivateやfinal
に守られていて手を出せなさそうです。

もしタイムアウト時間を変更する裏技や、代わりに使えそうなRest
クライアントのライブラリがあれば教えていただけないでしょうか。
海外の学術機関で共同開発するコードで使う必要があるので英語で
ドキュメンテーションされていて継続的にメンテナンスされている
「定番」みたいなライブラリだと大変助かります。

PHP界隈は全くの初心者なので、いわゆる「定番」の類に関しては
殆ど知識がありません。何か良い情報があればよろしくお願いします。
0955952,9532010/02/06(土) 05:29:12ID:???
自己解決しました
0956nobodyさん2010/02/06(土) 05:37:12ID:???
どうやって解決したのか書けよせめて
0957952,9532010/02/06(土) 06:25:31ID:???
>>956
すみません、クダ質すぎて不要な情報かと思ったもので…

indexアクションをデフォルトとしてルーティングで設定してるのに、
検索実行時のurlが/localhost/search/index/var1/val1…となってるのが問題でした
indexがパラメータとして解釈されていました
formのactionを "/search/index" でなく、"/search" にして解決しました
0958nobodyさん2010/02/06(土) 07:00:11ID: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
09599582010/02/06(土) 07:03:08ID:ZjFfb0Vm
Zend_formは使っていません。
centOS5.3で、zendFWのバージョンは1.8.1です。
よろしくお願いします
0960nobodyさん2010/02/06(土) 07:24:04ID:???
ZendってよりURLパラメタとPHPをやり直すべきでは
0961nobodyさん2010/02/06(土) 22:40:19ID:???
http://localhost/hoge/public/

上記のアドレスだとpublicが絡んでしまいます
こんな感じにしたいのですが
http://localhost/hoge/
どうすればいいですか?

助けてください
0962nobodyさん2010/02/06(土) 23:11:47ID:RDyP93EJ
apacheオススメだよ
0963nobodyさん2010/02/06(土) 23:24:37ID:???
え?index()じゃだめなの?
0964nobodyさん2010/02/07(日) 15:39:11ID:???
馬鹿にはウェブは無理。HTML描きに戻るしか。
0965nobodyさん2010/02/07(日) 15:50:17ID: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);


すみませんが、お分かりになられる方がおられましたらご教授お願いします。

0966nobodyさん2010/02/07(日) 15:56:14ID:???
質問する前にエラー文読めよ
0967nobodyさん2010/02/07(日) 16:01:26ID:???
もしかして、quoteする意味、わかってないよね?
悪いこと言わないから、自分が何をわかってないか整理して
適切な場所で聞いた方がいいと思うな。

まぁ、一応ヒントだしとくと、$dataをechoすればわかることだと思うけど。
09689662010/02/07(日) 16:23:28ID:???
一応ヒントだしとくと、ZF関係ないと思う
0969nobodyさん2010/02/07(日) 16:28:27ID:???
それヒントじゃなくてズバリ
0970nobodyさん2010/02/07(日) 16:40:12ID:cHUvBtME
自己解決しました。
知りたかったことはzendのquoteメソッドの書式です。
説明の為に固定値で書きましたが、
'aaaa'や'bbbb'の部分はフォームの入力値が入ります。
PHPの関数でエスケープしてもよかったのですが、
zend使ってるシステムだったのでzendに統一したかったのです。

エラーメッセージは既に本番稼動しているシステムのため、
(php.iniの設定で)非表示にされており、確認できない状態です。
本番稼動中のためhtaccessでの設定上書きも好ましくないです。

0971nobodyさん2010/02/07(日) 18:21:21ID:???
>>970
どういうふうに解決したの?
それから、本番環境でもエラーはキャッチしとかないとダメなんじゃないの?
原因特定できないよ。
で、再現するために無駄な時間を費やすと。
0972nobodyさん2010/02/07(日) 19:05:16ID:???
>>970
queryとquoteを誤用してるソースが本番にあるわけがないよね

プライドが高すぎて、できないのかもしれないけど、
基礎を勉強したり、ドキュメントに目を通したり、
エラーメッセージを読んだり、そういうことをちゃんとやったほうがいい。

質問するときに、エラーメッセージを書かないとか、省略するとかそれもありえない。
他所でも同じ間違いをすることになりますよ。
0973nobodyさん2010/02/07(日) 19:56:52ID:???
ああmagic quartと勘違いしてるのか
なんでphp.iniとか言ってるのかと思った
0974nobodyさん2010/02/07(日) 19:57:49ID:???
Atokの変換使ったら違う単語出てきた
quoteね
0975nobodyさん2010/02/07(日) 20:14:08ID:???
ちげーよ
SQLに入れるデータをエスケープするのにZend_Dbのquoteを使おうとおもったけど、
ドキュメント読み間違えてZend_Db::queryの用法と勘違いしたって落ちだろ
0976nobodyさん2010/02/08(月) 11:31:42ID:???
ZF1.10で何か追加された機能ってある?
0977nobodyさん2010/02/08(月) 12:18:13ID:???
MVCってめんどくさく思えるんだけど、やっぱYahoo!とか大手サイトなんかはZFのような提供されているフレームワークではなく、独自に開発したMVC構造なんか使ってるんですかね?
0978nobodyさん2010/02/08(月) 12:18:58ID:???
>>976
Zend_Barcode_Hage
0979nobodyさん2010/02/08(月) 14:26:39ID:???
>>978
おおっ、マジですか?
新しい機能が追加されたんですね
それは使えそうな機能ですね
楽しみです








・・・ハイハイ
0980nobodyさん2010/02/08(月) 22:43:57ID:HuDyW4AI
zendFrameworkを使って、管理画面(フォームの入力画面)を作りたいと思います。
今まではPHPでスクラッチで 入力画面・確認画面・修正画面・登録画面を別々に作ってたんですが、
zendFWを使うにあたって、どんな構造にしたら効率的かご意見お願いします。

なるべくテンプレートファイルやアクションを少なくすることをテーマにして
自分で考えたのは以下の処理なんですが、おかしいでしょうか?

class TestController extends Zend_Controller_Action(){
/*以下がフォームの画面*/
public function testformAction(){
//最初に入力モードの確認
・モードが入力・修正の場合、フォームのテンプレートを共通で読み込む。
 ただし、入力モードのときは、前回登録済みデータの確認と取得→表示
 修正モードの時はセッションで確認画面から持ち込んだデータを取得→表示
・モードが確認の場合、確認用のテンプレートを読み込む、各バリデータ処理
・モードが登録の場合、登録処理
 処理が正常にすんだら、succeedActionにフォワード、失敗したらerrActionへ
 
}

succeedAction(){
//各アクション登録成功時の共通画面出力「○○情報を登録しました」
}
errAction(){
//各アクション登録成功時の共通画面出力「○○情報の登録失敗しました」
}

}
09819802010/02/08(月) 22:45:41ID:HuDyW4AI
【つづき】
いろんなサイトで調べてもZendFormの使い方なんかはあるんですが
一連の流れの解説が見当たらなかったので、自分の考えでいいのか不安です。
もっと効率的なやり方や、別の方法で実用されている方がいたら、ご意見もらえると助かります。
よろしくお願いします。

また、zendFormを使おうとは考えていないんですが、zendFormを使うことで
上記の処理の構造面でも効率化できたりするものでしょうか?
0982nobodyさん2010/02/08(月) 22:50:53ID:???
なんでアクションやテンプレート数を減らす必要があるの?
別に減らす必要なくね?
0983nobodyさん2010/02/08(月) 22:54:12ID:???
まずは今までの別々をそのままzendにしたほうがいいだろうね。
その次で、目標のテーマに再編。一気に遣ろうとすると失敗すると思う。ひとつづつ段階踏んで確実に。
あるいは先に目標のテーマにまとめておいて、次にzendにする。


生め。
09849802010/02/08(月) 23:02:20ID:HuDyW4AI
>>982-983
ありがとうございます
アクションを減らさなくてもいいということは
form1inputAction, form1confirmAction, form1rewriteAction, form1queryAction などと
処理ごとに別のアクションを持たせて明確に分けたほうがいいってことでしょうか?

自分としてはこの構造だと見やすい・わかりやすいっていうすごいメリットがある反面
登録フォームの数が増えたら フォームの数*4の膨大なactionができるので、コントローラ全体と
して見れば煩雑にならないかなぁって思うのですが。(慣れれば良いことだとは思いますが…)

>>982-983さんはこんな感じでやっていますか?
回答いただいて本当に感謝します。
0985nobodyさん2010/02/09(火) 06:06:11ID:???
増えた時点でまとめていけば?
増えてみないと仕様が固まらないだろうし。
0986nobodyさん2010/02/09(火) 10:56:12ID:???
>>985
わかりました、とりあえず一つ作って様子見てみます
ありがとうございました
0987nobodyさん2010/02/09(火) 14:39:28ID:???
俺、あんま英語できないんで、ValidateとかView_Helperなんかの未だ和訳されていない部分の日本語化を誰か偉い人、お願いします
0988nobodyさん2010/02/09(火) 14:59:47ID:???
言いだしっぺの法則
0989nobodyさん2010/02/09(火) 16:37:05ID:???
>>988
めちゃくちゃな和訳でいいなら俺がやってもいいけど?
多分嘘書きまくるよ?
0990nobodyさん2010/02/09(火) 16:44:42ID:???
ok
0991nobodyさん2010/02/09(火) 17:08:51ID:???
頼んだ。
違うとこがあれば誰かが突っ込めばいいし、日本語の叩き台があるだけでも断然とっつき易いはず。
0992nobodyさん2010/02/09(火) 17:11:28ID:???
本買えばいいじゃん
レス数が950を超えています。1000を超えると書き込みができなくなります。