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

Zend Framework Part4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/09(火) 22:21:24ID:???
公式
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 Part3
http://pc11.2ch.net/test/read.cgi/php/1239320100/
0002nobodyさん2010/02/10(水) 01:40:17ID:???
専門的な記述のめちゃくちゃ和訳wktk
容赦なく突っ込んでやるからケツ貸せよ。
0003nobodyさん2010/02/10(水) 09:21:33ID:???
質問させて下さい
<?php
require_once 'Zend/Filter/Input.php';

$data = array( 'price' => '' );

$filters = array( '*' => 'StringTrim' );

$valids = array( 'price' => array(
Zend_Filter_Input::ALLOW_EMPTY => FALSE
//Zend_Filter_Input::ALLOW_EMPTY => TRUE,
//Zend_Filter_Input::PRESENCE => Zend_Filter_Input::PRESENCE_REQUIRED )
);

$options = array( Zend_Filter_Input::NOT_EMPTY_MESSAGE => '%field%は空文字列を許可しません。' );

$in = new Zend_Filter_Input($filters, $valids, $data, $options);
if($in->isValid()) {
print('検証に成功しました。<br />');
} else {
print_r($in->getInvalid()); //[A]
}
を実行すると、ブラウザには
Array ( [price] => Array ( [isEmpty] => priceは空文字列を許可しません。 ) ) 
と出ますが、 これを「priceは空文字列を許可しません。」、と表示させるにはどうすればいいのでしょうか?
[A]の部分を単純にprintやechoにしても「Array」、としかブラウザに表示されないものですから
0004nobodyさん2010/02/10(水) 09:35:15ID:???
>>3
ネタ乙
0005nobodyさん2010/02/10(水) 09:37:20ID:???
>>4
ごめんなさい、ネタじゃなくてマジで聞いています・・・すみません
0006nobodyさん2010/02/10(水) 09:51:06ID:???
foreach($in->getInvalid() as $invalid) foreach($invalid as $message) echo $message . "<br />\n";
0007nobodyさん2010/02/10(水) 10:35:10ID:???
>>6
ありがとうございました
0008nobodyさん2010/02/12(金) 22:56:41ID:Rluma8O9
Zend_Db_Table::fetchAll()はありますが、
Zend_Db_Table::fetchOne()はなぜないのでしょうか?
0009nobodyさん2010/02/12(金) 23:14:04ID:???
一人はみんなのために
みんなは一人のために
0010nobodyさん2010/02/12(金) 23:39:35ID:???
fetchAll()に対するのはfetchRow()じゃないのか
0011nobodyさん2010/02/12(金) 23:42:53ID:Rluma8O9
>>10
対の話ではないです。

Zend_Db::fetchOne()はありますが、
Zend_Db_Table::fetchOne()がなぜないのかなぁと。
0012nobodyさん2010/02/12(金) 23:45:14ID:???
Zend_Db::fetchOne()
ってあるの?
0013nobodyさん2010/02/13(土) 00:55:50ID:???
無いよ
0014nobodyさん2010/02/13(土) 00:56:54ID:???
Zend_Db_Tableってそもそもテーブル単位のデータ取得なんだからOneがあったらおかしい
PKだけ入ってるテーブルって事になる
0015nobodyさん2010/02/13(土) 00:58:51ID:vm0LKRH2
COUNT(*)での利用を想定していたのですが、無いようですね
0016nobodyさん2010/02/13(土) 07:00:36ID:???
Adapterにあるね
0017nobodyさん2010/02/13(土) 13:05:28ID:???
Zendやりたくて環境設定まで終えてググってHelloWorld表示まではできたんですが、
次にプログラマ向けリファレンスガイド見て覚えようと思い
まずZend_Controllerから見ていこうと思ったんですが、最初に最低限目を通して
おいた方がいいのはZend_何でしょうか?
0018nobodyさん2010/02/13(土) 13:53:45ID:???
HelloWorldはいいとして、
ググる前にquickstartはおすすめ
http://framework.zend.com/manual/ja/learning.quickstart.html
http://framework.zend.com/manual/ja/learning.html

コンポーネント別では、Zend_Service_*がいいと思う
0019nobodyさん2010/02/13(土) 17:01:12ID:vm0LKRH2
>>16
それで解決しました。

>>!4
Tableだって一つの返り値あります。
0020nobodyさん2010/02/13(土) 17:25:25ID:???
普通にZend_Db使えばいいのでは
0021nobodyさん2010/02/13(土) 17:35:28ID:vm0LKRH2
>>20
何でですか?
複数テーブルで運営してるので明らかに不便なんですけど。
0022nobodyさん2010/02/13(土) 17:38:13ID:???
使い方解ってないんじゃね
0023nobodyさん2010/02/13(土) 21:05:02ID:Vt3QKYJR
スゴい素人質問なんですが、
一つのサーバでzendFWを使う複数のサイトを作るとき(バーチャルドメインとかで)、
zendFWのパッケージ(?)はサイトの数分インストールしなくても良いのでしょうか?
FWのインストールは一度限りで、applicationディレクトリやルーティング、
テンプレートへのパス設定をそれぞれのサイトのフロントコントローラでやるだけで、
それぞれ別のサービス・ルールとして動いてくれるんでしょうか?

PHPだって2つも3つもインストールしないんだから一緒だろうとは思ったのですが
FWが初めてなので質問しました。すみませんが回答お願いします。
0024nobodyさん2010/02/13(土) 21:27:05ID:???
>>23
application単位で管理すればおk
それでだいたいうまく行く
0025nobodyさん2010/02/13(土) 21:33:22ID:???
Zend_Db_TableにOneないのってのは
PHPプログラマらしい質問だと思う
オブジェクト指向が解ってない
0026nobodyさん2010/02/13(土) 22:21:13ID:???
質問者じゃないけど、このスレって質問があったときに適当に突っかかってくるよね。
OneがないならAdapterって返答スレばいいのに>>25みたくオブジェクト指向的には〜みたいに言いがかりつけて。
使いたいように使えっていうのがZFの発想だからどう使おうが自由。

>>25
オブジェクト指向的な説明お願いします。
0027nobodyさん2010/02/13(土) 22:28:01ID:???
使いたいように使えっていうのがZFの発想

え?
0028nobodyさん2010/02/13(土) 22:29:37ID:???
Zend_Db_TableでfetchOneはないんですかって質問なんだから
オブジェクト指向のデータアクセスでどのデータが帰ってくるか解らないOneなんて無いんだから無いんだよって話だろ
帰ってくるのはオブジェクトかオブジェクトのリストなんだから
0029nobodyさん2010/02/13(土) 22:45:51ID:???
> ってくるのはオブジェクトかオブジェクトのリストなんだから
なぜ、そう言い切れるんだ?

Zend_Db_AdapterならfetchOneがあって、TableならfetchOneがない理由とは言えないよな。

テーブルゲートウエイパターンに忠実とかそういう話なら少しはわかるが、
オブジェクト指向のデータアクセス??そこんとこ詳しく教えてくれ。
0030nobodyさん2010/02/13(土) 22:47:34ID:???
>>27
http://framework.zend.com/manual/1.10/ja/introduction.overview.html
>我々はこれを "use-at-will (使いたいように使ってくれ)" 方式と呼んでいます。

え?
0031nobodyさん2010/02/13(土) 22:55:51ID:Vt3QKYJR
zend_Validaterを勉強しています。
バリデートクラスをnewで作るのって、検証対象の値ごとに作るしかないんでしょうか?
たとえば$val= new Zend_Vlidate_GreaterThanInt(n)を3つ<input type=text>の値に対して
それぞれやるとなると当然3つですよね?(制限値nが異なる場合)
3つならともかくフォーム全体で20個newするなんてことになるとすごく冗長というか
もっと要領のいいやり方はないのか気になってしまいます
みなさん、素直に大量にnewするようなセオリーに従ったつくりにしていますか?
何か効率化のアイディアがあったらアドバイスいただけると嬉しいです。よろしくお願いします。


>>24
ありがとうございました、自信がもてなかったので助かりました。
0032312010/02/13(土) 22:57:13ID:???
書き間違えました
>たとえば$val= new Zend_Vlidate_GreaterThanInt(n)
たとえば$val= new Zend_Vlidate_GreaterThan(n) でした
0033nobodyさん2010/02/13(土) 22:58:34ID:???
>>31
Zend_Formを使うといいよ
0034nobodyさん2010/02/13(土) 23:12:29ID:???
おれは大量にnewするのがいやだから、インスタンス管理して投入してる
Validaterだけじゃなくて、decoratorもfilterも
ベンチとったわけじゃないけどね。なんとなく。
0035nobodyさん2010/02/13(土) 23:19:28ID:???
>>29
0036312010/02/13(土) 23:50:18ID:???
>>33
Zend_Form、そんなに画期的なんですか?
ありがとうございます、調べてみます。

>>34
インスタンス管理ってどんなことをするんでしょうか?
かなり恥ずかしい質問かもしれないです、すみません

php インスタンス管理/php インスタンス共有/オブジェクト指向 インスタンス管理
などでググって調べたんですがはっきりわかるものが出てきませんでした。
zend以前の質問かもですね…
うーん、、
0037nobodyさん2010/02/13(土) 23:56:21ID:???
インスタンス管理って、別にたいしたことじゃない。
変数に保存しておいて、setValidaterするだけ
0038nobodyさん2010/02/14(日) 00:24:20ID:???
>>36
すごく画期的。Javaの入力フォームみたいな感じで作れる。
フォームの作成とバリデーションを一緒にやってくれる。
ただ、デフォルトだと決まったレイアウトになるからそこら辺がいやでなければ断然こっち。


やりたいことを書くとこんな感じ
$form = new Zend_Form();
$form->setAction('/path/to/script')->setMethod('post');

$int = $form->createElement('text', 'int');
$int->setRequired();
$int->addValidator('GreaterThan', false, n);

$form->addElement($int);
0039nobodyさん2010/02/14(日) 01:09:08ID:???
>>37
どうもありがとうございます。
最初に変数に入れておくって、
(例として、今、GreaterThan.phpを開いてみているんですが)

$g = new ZendValidate_GreaterThan()//ここでは値を入れない
$chkParamA = $g->setMin(10);
if(!chkParamA->isValid($paramA)){//エラー出力}
$chkParamB = $g->setMin(5);
if(!chkParamB->isValid($paramB)){//エラー出力}

こんな手順でされているということでしょうか?
setValidatorというメソッド?がマニュアル見ても見つけられなかったので
ぜんぜん変なこと聞いてるかもしれないです、すみません。
しつこくてすみません、お返事いただけると幸いです。
ただこのやり方だとnewが減らせるだけで行数の多さは大して変わらないですね…
しょうがないのかな


>>38
わざわざありがとうございます。
パラメータの種類や名前と一緒にバリデータルールまでまとめて定義できるんですね
確かに楽だしすごいなー
ただ、<input name="userName[]" type="text" />を任意の数だけループ出力したり
n個目だけCSSのクラスを適用するような処理には向いてなさそうですね。。
テーブルに組み込んだりのレイアウトも癖がありそうだし…
上手に使い分けできるようにならなきゃだめですね〜
難しいけどできるようになりたいな。。


お二人とも、本当にありがとうございます
0040nobodyさん2010/02/14(日) 09:47:20ID:???
あぁ、すまんtypo
Zend_Form関係のsetValidatorsを使う
必要なValidatorのセットを作っておいてFormとかElementに設定して使う

> n個目だけCSSのクラスを適用するような処理には向いてなさそうですね。。
めちゃめちゃ向いている。
そのためのZend_Form
0041nobodyさん2010/02/15(月) 13:14:36ID:???
Zendの書式で質問なんですけど、なんで字下げにタブ使っちゃダメなの?
ドキュメントに理由が書いてないのですごく引っかかります。
0042nobodyさん2010/02/15(月) 14:20:38ID:???
ドキュメントに書いていないことなんだよな。
で、他人の妄想を聞いてどうすんの?
0043nobodyさん2010/02/15(月) 15:04:28ID:???
妄想とか聞く気はないんですが、どこかに書いてあって見つけきれないだけかと思い
聞いてみました。
明確に書いてあることなのでそれなりの理由があると思ったんですがなにかおかしなこと聞いていますか?
0044nobodyさん2010/02/15(月) 15:11:15ID:???
コーディング規約があるプロジェクトに参加したことないのか
複数人で開発するときは、書き方が混ざったら読みづらくなるから
全員同じ書き方にあわせる
ただそれだけの話だ
0045nobodyさん2010/02/15(月) 15:14:02ID:???
>>44
このあたりとか、"タブ スペース"あたりでググるとそれ関連のがわんさかと。
http://blog.livedoor.jp/dankogai/archives/50475459.html

>>26じゃないけど、このスレは基本突っかかってくるからあんまり気にしない方がいいよ。
利用者がひねくれたフレームワークなのかもしれない。
0046452010/02/15(月) 15:15:26ID:???
>>45>>43宛で
0047nobodyさん2010/02/15(月) 15:15:47ID:???
>>43
PEARについて書いてあるけどたぶん理由は同じなので。
ttp://www.phppro.jp/phpmanual/pear/faq.tabs-vs-spaces.html

ZendはPEARの規約を引き継いだんだと思うけど
0048nobodyさん2010/02/15(月) 15:52:24ID:???
diffとったときに、スペースがタブになってると萎える
かといって、PHPの場合、テンプレ兼ねてるからタブだけガン無視も無理だし
0049nobodyさん2010/02/16(火) 03:49:53ID:iRRBilsA
一つの同じコントローラ中に
・queryAction
・finishAction
の二つのアクションがあります。

queryActionではデータベースへのquery登録処理(insert)がされていて、
それが成功したら
$this->_forward('finish'); と、finishAction(完了画面)に遷移させています。

が、遷移後の画面で画面をリロードすると、再度クエリしようとしてしまいます。
どうしたらいいでしょうか?
リロードしても何も起こらないようにしたいのですが。。
0050nobodyさん2010/02/16(火) 03:59:11ID:???
>>49
処理終了後はforwardじゃなくてredirect
0051nobodyさん2010/02/16(火) 05:19:42ID:???
>>49
PRG (POST-REDIRECT-GET) パターンが一般的かなぁ
他にはpostにチケットを入れといて、リロード時や2度押しを判別
0052nobodyさん2010/02/16(火) 12:16:10ID:???
フィルターを一部のコントローラーだけでなく、全体に適用したいのですが
それ用の処理関数はありますか?
0053nobodyさん2010/02/16(火) 15:12:42ID:iRRBilsA
現在zend_mailをつかってて、メール送信できないトラブルにはまっています。
それで、sendmailの設定などしていたらpostfixに切り替えたい気持ちになってきました。

zend_mailはpostfixに対応してるんでしょうか?
php.iniのsendmail_pathをpostfixのに変更すればいいのでしょうか?

linuxのメールソフトに関してはsendmailよりもpostfixやqmailのほうがメジャーだという
傾向のようなのに、マニュアルやzFW徹底入門などを見ると、ソフトの切り替えに関して
書いていないので困っています。

zendMailを利用されている方、標準のsendmailのままで使ってるんでしょうか?
ご意見もらえると嬉しいです。



>>50-51
ありがとうございます。たすかりました!
0054nobodyさん2010/02/16(火) 15:16:45ID:???
MTAなんて何使っても同じ
トヨタ車でもホンダ車でも目的地に着けるのと同じ
0055nobodyさん2010/02/16(火) 16:05:59ID:???
>>53
スレチだよ
0056nobodyさん2010/02/16(火) 18:42:14ID:???
>>54-55
ありがとうございました。
zendFWにかかわるのでスレチじゃないかと思ってましたが、すみません
0057nobodyさん2010/02/16(火) 19:04:48ID:???
別にいいよ。すみませんはいらない。
1. sendmailからpostfixへの切替方法
2. phpでsendmailではなくsmtpでメール送信する方法

それぞれどこに聞くといいかちょっと考えてみて

Zend_Controllerをいじっててトイレに行きたくなったんだけどトイレはどこ?
そのレベル
0058nobodyさん2010/02/16(火) 19:08:26ID:???
メール出来る様に設定すればいいだけだしな。
メール出来るならZFでも問題なく使える。
ZFからスパムメール送るなら規制されて当然w
0059nobodyさん2010/02/17(水) 02:08:15ID:QzZxEOBR
相談です。リダイレクト処理がうまくいきません

hogeController/indexAction/
hogeController/aaaAction/
hogeController/bbbAction/
という構造のコントローラがあります。
この中のaaaActionで
$this->_redirect('/hoge/bbb'); としてbbbアクションにリダイレクトさせてるんですが
どういうわけかbbbへのリダイレクトの結果indexActionの処理が実行されています
(アクションの中身は以下のとおりです。)
public function indexAction(){
 echo "indexAction";
}
public function aaaAction(){
 //ここの処理に成功したら以下のリダイレクト
 $this->_redirect('/hoge/bbb');
}
public function bbbAction(){
 echo "bbbAction";
}

ブラウザのURLを見ると localhost/hoge/bbb となっているのに
ブラウザの画面では 「bbbAction」ではなく「indexAction」 とindexActionの結果が出力されるのです。
どんな原因が考えられるでしょうか?
0060sage2010/02/17(水) 02:31:41ID:???
>208
returnを使ってください。
redirectだけではなくforwardも同様ですよ。

public function aaaAction(){
 //ここの処理に成功したら以下のリダイレクト
 return $this->_redirect('/hoge/bbb');
}

ちょうど素通りしましたのでご参考になれば。
0061nobodyさん2010/02/17(水) 03:38:19ID:???
>>60
こんな時間にありがとうございます
でも、そのreturnを冒頭に加える処理をしても結果は同じでした
そもそもなんでindexActionに転送するのか、
bbbActionの中に限らずredirect処理を実行してる場所なんて
どこにもないので困っています。
どんな原因が考えられるでしょうか?
0062612010/02/17(水) 10:06:25ID:???
自己解決しました
原因はredirectの動作には関係ありませんでした
routingでbbbアクション用のルート設定をしてなかったのが原因でした
indexが出力されるのは/hoge/bbbのbbbをパラメータと判定されてたからでした
お騒がせしてすみません、ありがとうございました
0063nobodyさん2010/02/18(木) 15:20:23ID:???
Manual英語の部分まだまだ沢山あるね
0064nobodyさん2010/02/18(木) 15:46:08ID:???
個人的にはPEARのマニュアルのいい所をZFには導入して欲しいと思う
0065nobodyさん2010/02/18(木) 16:34:46ID:???
http://www.live-commerce.com/
0066nobodyさん2010/02/19(金) 10:25:20ID:???
Zend_Cacheにgetってメソッドがあったようですが、コレはどうなったのでしょうか?
ZF徹底入門(バージョンは1.5のようです)のP455の一番下に書かれていたのですが、後ろのリファレンス集には書かれていません・・・
昔のマニュアルなどには$cache->get()みたいに書かれて使われていたみたいなのですが、最近のマニュアルには書かれていませんし、APIにも出てきません
0067nobodyさん2010/02/19(金) 12:35:08ID:???
その本のことは知らんけど、昔から test load save だったと思うよ。
なんかの間違いでは
0068nobodyさん2010/02/19(金) 14:06:08ID:???
過去のソース見ればええねん
0069nobodyさん2010/02/19(金) 14:28:05ID:vk4cE2Qg
>>66
Zenf_Registryと勘違いしてないか?
0070nobodyさん2010/02/19(金) 14:31:26ID:???
>>67
自分も急にgetメソッドとか書かれて「?」って感じでその本をくまなく見てみましたがZend_Cache内では見当たらず、マニュアル、APIと探しましたがありませんでした
Web上では少なかったですが見つけましたが、推奨メソッドなのか良く分からなくて
もしかしたらどっかのバージョンで廃止になったかな、とも思いましたがバージョンアップ情報には書かれていませんでした
このサイト(http://itpro.nikkeibp.co.jp/article/COLUMN/20060810/245681/?ST=lin-server&P=3)にはgetが書かれていましたが、0.1.5という化石のようなバージョンで参考になりませんでした
0071nobodyさん2010/02/19(金) 14:34:05ID:???
>>69
えっ?
Zend_Cacheのページですし、Outputフロントエンドの項目の説明文中に書かれています
Zenf_Registryはこのコード、MVC内では使用されていないようです
getメソッドと書かれているくせに、サンプルコードにはいっさいgetは入っておりません
0072712010/02/19(金) 14:36:38ID:???
Zenfではなく、Zend_Registryです
0073nobodyさん2010/02/19(金) 16:12:47ID:g43faW/Y
ZF徹底入門のTypoってことで
次の方どうぞ
0074nobodyさん2010/02/20(土) 00:54:29ID:???
http://framework.zend.com/svn/framework/standard/tags/release-0.9.0/library/Zend/Cache/Core.php
> THIS METHOD IS DEPRECATED : USE LOAD() INSTEAD (same syntax) !
> it will be removed in ZF 1.1 !
なんで1.0じゃないの。。
0075nobodyさん2010/02/20(土) 10:04:46ID:???
>>74
他のことが忙しくて、 1.0 には間に合わないと contributor が思ったからじゃないの?
0076nobodyさん2010/02/21(日) 18:19:24ID:X8UnhclP
質問です。
zend_validator使ってるんですが、NotEmptyバリデータで警告文を設定しても
標準の警告が出てしまいます
$val_loginPass_empty = new Zend_Validate_NotEmpty();
$val_loginPass_empty->setMessage('パスワードが未入力です。', Zend_Validate_NotEmpty::IS_EMPTY);
if(!$chain_loginPass->isValid($params['loginPass'])){
 foreach($chain_loginPass->getMessages() as $errMsg) $errMsgAry[] = $errMsg;
}

こんな処理で該当フォームを未入力で送信したところ、
 # パスワードは6文字以上で入力してください。(文字数制限のバリデータもこの上で書いてます)
 # ?? is an empty string
 # パスワードが未入力です。
と出力されるのです。
ちなみにpost値をdumpすると ["loginPass"]=> string(0) "" となります。
何が原因でしょうか? ??は ' らしいですがそんなのどこにも入れてないんですが…
他の箇所のNotEmptyでは設定した警告文以外でません。。
どなたかご意見よろしくお願いします。
0077nobodyさん2010/02/21(日) 19:14:38ID:???
>>76
インスタンスに関係性がない
0078nobodyさん2010/02/21(日) 20:42:22ID:???
>>76
コテハン付けてくれ
0079nobodyさん2010/02/21(日) 21:15:35ID:???
>>76
コテハンにすると質問に答えてもらいやすくなるよ。
0080nobodyさん2010/02/22(月) 11:06:23ID:???
Zend_Currencyを使うと、エラーが出るのですが、どう対処すればいいのでしょうか?
エラー内容は以下の通りです

Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:277 Stack trace: #0 C:\php\includes\Zend\Currency.php(333): Zend_Currency->_checkParams(NULL,
'ja') #1 C:\php\includes\Zend\Currency.php(518): Zend_Currency->getShortName(NULL, 'ja') #2 C:\php\includes\Zend\Currency.php(99):
Zend_Currency->setLocale(NULL) #3 C:\Apache2.2\htdocs\Zend\currency\toCurrency.php(4): Zend_Currency->__construct() #4 {main}
thrown in C:\php\includes\Zend\Currency.php on line 277

自分には良く分かりませんでした
0081802010/02/22(月) 11:08:15ID:???
すみません、ZFのバージョンは1.9.6だったと思います
PHPは5.2.12です
0082802010/02/22(月) 11:25:50ID:???
連投すみません
今、バージョンによって駄目なのかと思い、最新版の1.10.1にしたのですが、今度も

Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'ja'' in
C:\php\includes\Zend\Currency.php:548 Stack trace: #0 C:\php\includes\Zend\Currency.php(101): Zend_Currency->setLocale(NULL) #1
C:\Apache2.2\htdocs\Zend\currency\setFormat.php(4): Zend_Currency->__construct() #2 {main} thrown in
C:\php\includes\Zend\Currency.php on line 548


のようなエラーが出ました(ライン数は大きく変わっていますが)
Zend_Localeが影響してエラーが出るとか何かで読んだ気がするのですが、Zend_Translate、Zend_Date、Zend_Measureなどは普通に動作しておりました
0083nobodyさん2010/02/22(月) 12:20:57ID:???
今はjaにしてる?言語ならjaでいいけど、地域がわからないと通貨がわからないからね
ja_JPにしてみたらどう?
0084802010/02/22(月) 14:39:46ID:???
>>83
ありがとうございました
ja_JPにしたら出来ました
ご迷惑おかけしました
0085nobodyさん2010/02/22(月) 19:06:49ID:???
覚えることいっぱいあるなぁ
もう疲れたよ
0086nobodyさん2010/02/22(月) 20:11:47ID:???
いちいち覚えてないよ
必要になったら調べるだけ
0087nobodyさん2010/02/22(月) 20:29:21ID:???
確かに、ZFは他のFWと比べても色々と大変だよな
今コンポーネントっていくつあるんだっけ?
70あるかないかってとこかな?
0088haruna2010/02/23(火) 14:59:27ID:p7GWr9xn
ZendFramework徹底マスター(ソーテック社)のサンプルをダウンロードし、Apacheのhtdocs内に入れたのですがサーバが見つかりませんとなり、動作しません。
例えば、C:\Apache2.2\htdocs\ZF2\Chapter02-02内のHogeControllerのpiyoActionにアクセスしたいので、http://localhost/ZF2/Chapter02-02/Hoge/piyoのように記述しましたがエラーが出ました。
本書にはhttp://localhost/Hoge/piyoでアクセスしていますが、コレで実行しても案の定駄目でした。
この場合、どのようにURI記述すればアクセスできるのでしょうか?
フォルダ構成は以下の通りです。

Chapter02-02 --- html--index.php
|
---application
|---models
|---views
|---controllers
|---HogeController.php
|---ErrorController.php
0089nobodyさん2010/02/23(火) 15:14:19ID:???
おれも初心者で詳しくないが、ZFダウンロードしてきて展開してinclude_path通してrewrite設定してる?
0090nobodyさん2010/02/23(火) 15:36:27ID:???
> サーバが見つかりません

URIの前にlocalhostにアクセスできてないでしょ
0091882010/02/24(水) 09:18:28ID:???
まさかのYahoo!地域回線ダウンで一日ネットに繋げませんでした・・・
>>89-90
設定はおかしくないはずなのですが・・・
この前にZendFramework徹底入門をやって、しっかりとZFは動作していましたし
PHP、Apache設定はずっと使っていて何の問題も無いので大丈夫だと思います
ZFはパスの書き方がちょっと癖があるのでChapter02-02の部分が悪いのかと思ってフォルダ名をtestとかに変えても駄目でした
徹底入門のサンプルと同じhtdocsに入れているのですが、どうして出来ないのかと思いまして
サンプルのコードを色々と見てみたのですが、悪そうな部分もなく、パスも大丈夫だと思ったのですが・・・

>>88は知人にメールを送って書き込んでもらったのでちょっと線がずれているようですので書き直します
Chapter02-02 --- html--index.php
          |
          ---application
             |---models
             |---views
             |---controllers
                 |---HogeController.php
                 |---ErrorController.php

((index.php))
<?php
require_once 'Zend/Controller/Front.php';
$front = Zend_Controller_Front::run('../application/controllers');

((HogeController.php))
<?php
require_once 'Zend/Controller/Action.php';
class HogeController extends Zend_Controller_Action
{
public function piyoAction()
{ }
}
0092892010/02/24(水) 09:51:56ID:???
つまりhtdocs直下にChapter02-02を入れたわけね
htdocsがDocumentRootなわけね
で、RewriteBase設定は /Chapter02-02/html/ になってると

ここまでの設定はおかしくないはずと・・
0093nobodyさん2010/02/24(水) 09:52:00ID:???
> 設定はおかしくないはずなのですが・・・

じゃぁ、設定は変えなくていいね。
0094nobodyさん2010/02/24(水) 09:52:51ID:???
0095nobodyさん2010/02/24(水) 09:56:00ID:???
そのパス通りなら、'../application/controllers'は違うよな
0096892010/02/24(水) 09:58:17ID:???
違うか>>88見るとC:\Apache2.2\htdocs\ZF2\Chapter02-02
だからRewriteBaseは /ZF2/Chapter02-02/html/ になるかな
0097nobodyさん2010/02/24(水) 10:39:30ID:???
友達に頼んで書き込んでもらうほど匿名掲示板に期待されても
0098882010/02/24(水) 12:00:03ID:???
>>97
本書のサポートページがなくて、また、質問は受け付けていないようなのです・・・

>>皆さん
ありがとうございました
解決いたしました
確かに、RewriteBaseのパスを間違えていたようでした
ほんとごめんなさい
0099nobodyさん2010/02/24(水) 23:57:57ID:siRy84kx
質問させてください。
コントローラの読み込みがうまくいかないのですが何が原因でしょうか?
エラーは以下です。
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(35): Zend_Controller_Front->dispatch()\n
#2 {main}\n thrown in /usr/lib/php/Zend/Controller/Dispatcher/Standard.php on line 241, referer省略

コントローラ名が単純でなく、命名規則に反してるのか、あるいはルーティングがおかしいのかと思ったのですが
自分ではわかりませんでした。すみません、ご意見お願いします。
■URLは
http://localhost/admin-spot/
■コントローラ(/var/www/application/Controllers/AdminSpotController.php)
<?php
require_once 'Zend/Controller/Action.php';
class AdminSpotController extends Zend_Controller_Action {
public function init(){ }
puglic function indexAction(){}//何も書いてません
}
■viewスクリプト(/var/www/application/smarty/templates/default/admin-spot/index.tpl)
 中身はhtmlタグだけでできていて、smartyタグは入ってません(エラーの要素ないかなと。。)
■ルーティング
routes.adminSpot.route= "/admin-spot/*"
routes.adminSpot.defaults.controller= "AdminSpot"
routes.adminSpot.defaults.action= "index"
routes.adminSpot.type = "Zend_Controller_Rou

長くなってしまいすみません、よろしくお願いします。
0100nobodyさん2010/02/25(木) 00:09:52ID:???
ErrorControllerをちゃんと設置するか
もしくは、
$front->throwExceptions(true);
して、エラーの原因を探ってみて
0101992010/02/25(木) 00:27:05ID:nHRZ8Mu+
>>100
すばやいレスありがとうございます。
ルーティングの設定やコントローラ名・ファイル名などはあれで問題ないのでしょうか?
フロントコントローラの一番下に
$front->throwExceptions(true);
と追記しましたが、画面は真っ白のまま、エラーログも同じ変わりありませんでした
■ このスレッドは過去ログ倉庫に格納されています