ZendFrameworkってどうよ?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/10/07(土) 02:49:15ID:6wQ8r0Dcこれってどうよ?
PHP5に移行したほうがいいのかな
0756nobodyさん
2007/12/06(木) 03:32:59ID:???0757nobodyさん
2007/12/06(木) 11:19:10ID:???(日本時間で 冬15時、夏14時)ダウンロードするものを済ませ
たほうがいいよ。それ以降は混雑しますので、Zend Frameworkに限らず。
0758nobodyさん
2007/12/08(土) 21:58:18ID:???インストールや初期設定は終わり、一番最初のindexアクションは成功。
controllers/以下にIndexController.phpを作って
http://127.0.0.1/
でIndexController.phpのindexactionは表示できるようになった。
そこで次は別のを作成。
controllers配下にMainController.phpを作成
<?php
require_once 'Zned/Controller/Action.php';
class MainController extends Zned_Controller_Action
{
public function indexAction()
{ echo "初期"; }
public function newsAction()
{ echo "ニュース"; }
}
内容は単純なこんなもの。
調べた結果によると、
http://127.0.0.1/main/ でアクセスすれば初期と表示され
http://127.0.0.1/main/news/ でアクセスすればニュースと表示されるはずなのに
どちらも
Not Found
The requested URL /main/ was not found on this server.
とでて表示されない。
何か設定が足りないのだろうか?
ttp://blog.so-net.ne.jp/pluto-blog/
環境はこのブログを参考にして構築してみた。
0759nobodyさん
2007/12/08(土) 22:05:50ID:???スペル間違い訂正。
修正しても変わらず。
0760nobodyさん
2007/12/08(土) 22:08:31ID:???でも404だと根本的にroutingできてなさそうだな
.htaccessを確認をしてみるとか
0761nobodyさん
2007/12/08(土) 22:18:28ID:???そもそもApacheの方で設定できてなかった・・・orz
設定後、表示はされるようになりました。
しかし何故か文字化け・・・
日本語を使うと文字化けしてしまう。
でもIndexController.phpの方は日本語でもちゃんと表示される。
MainController.phpの方だと文字化けしてしまっている。
それぞれのファイルの保存文字コードや改行コードを調べてみるもどちらもUTF-8で保存、改行はLFのみ。
全部化けるならPHPのマルチバイト辺りの設定かなと思うのだけど、
indexのが化けないで、mainが化ける意味が・・・
0762nobodyさん
2007/12/08(土) 22:34:52ID:???response headerでもcharset指定してないんだったら
そりゃ化けてもおかしくないだろう
・とりあえず吐き出す内容にmetaタグ入れてみる
・responseのcontent-typeヘッダにcharset指定を入れる
くらい最低試せ
0763nobodyさん
2007/12/08(土) 22:48:26ID:???indexが化けなかったのは日本語が長めだったからブラウザが自動認識してたみたい。
初期とかじゃないくて同じ文字入れたら化けなかった。
こっちは短すぎてブラウザが文字コード断定するに至らなかったようだ。
metaタグ入れたら短くてもちゃんと表示されるようになった。
どうもありがとう。
一通りいけたので、これから頑張ってやっていけそう。
0764nobodyさん
2007/12/08(土) 23:59:02ID:vYBrSVgv0765nobodyさん
2007/12/15(土) 17:18:24ID:???ZF 1.5
2008年第1四半期予定?
0766nobodyさん
2007/12/19(水) 21:47:47ID:???あまりユーザいないのかもしれないけどよろしく。
0767nobodyさん
2007/12/20(木) 00:41:26ID:xSS/j6Nl0768nobodyさん
2007/12/20(木) 04:01:45ID:???0769nobodyさん
2007/12/20(木) 06:46:02ID:???$front->setBaseUrl('/sample');
とやって、(たぶんsetBaseUrl()していることは関係ないと思うけど)
ttp://localhost/sample/
とか
ttp://localhost/sample/index
ではちゃんとアクセスできるんですが、
ttp://localhost/sample/index.php
でエラーが発生するのはデフォ?
dumpさせると
["controller"] => string(9) "index.php"
["action"] => string(5) "index"
["module"] => string(7) "default"
ってあったから、「"Index.php"と言うコントローラ(Index.phpController.php)が無いよ!」
ってことなんだろうけど、ほんとうにこの動作がデフォルトなんだろうか?
0770nobodyさん
2007/12/20(木) 06:46:51ID:???0772nobodyさん
2007/12/20(木) 17:09:50ID:???さんくす、そうだったのか。
>>770
うまく伝わらなかった? それとも「今更」だったのか。
まぁ、今更だったんだろうけど、念のため確認しておきたかった。
既出だったらスマソ。
そこで、/sample/index.phpとアクセスされた場合、みなさんどうしてる?
1. エラーメッセージhtmlを吐く
2. ErrorControllerから _forward('index')
3. ErrorControllerから setRedirect() でHTTP Location: ヘッダーを吐く。
他
2と3を比べた場合、2の方が負荷が低いだろうけど、何となく気持ち悪いので3かな。
0773nobodyさん
2007/12/20(木) 19:15:15ID:???いや、というかURL Routingしてんだから
index.phpというURLに対して特別にRoutingする必要自体がない
404 Not Foundにするべき
(すでにindex.phpで公開していてその形に変更するなら
ブックマークへの対応としてindexへリダイレクトする必要はあると思うけど)
バックエンドがphpであろうとperlであろうと
最終的にブラウザに返すリソースはこの場合htmlであって
.phpというURLにリクエストしなきゃいけないのはあくまでサーバ側の都合によるもの
0775nobodyさん
2007/12/20(木) 21:45:37ID:???自分でそういう風にルーティング設定しているのにわざわざ騒いでて意味わかんねってこと。
index.phpにリクエストが来てどういう挙動をすれば納得したんだ?
0776nobodyさん
2007/12/20(木) 23:49:49ID:???>>773の説明でスッキリした。確かにそういう風にルーティングしたんだからな。
769の時点ではクライアントにはわからない(関係ない)のだろうけど、index.phpを
置いているんだから、/index.phpにアクセスがあったら/index/indexに自動的に
ルーティングされるべきと思っていたんだよ。
最初から404を吐いてたら気づいたか... いや余計に混乱したかな?
まぁ、俺の頭の固さ所以だ。許してつかーさい。
0777nobodyさん
2007/12/22(土) 06:14:11ID:???http://devzone.zend.com/article/2856-Zend-Framework--Coming-soon-to-a-Command-Line-near-You
0778nobodyさん
2007/12/22(土) 15:46:48ID:???コード生成とかか
0779nobodyさん
2007/12/22(土) 16:48:43ID:???0780nobodyさん
2007/12/29(土) 22:20:05ID:???0781nobodyさん
2007/12/29(土) 22:40:12ID:???(省略されました・・全てを読むにはワッフルワッフルと書き込んでください)
0782nobodyさん
2007/12/29(土) 22:42:31ID:???0783nobodyさん
2008/01/10(木) 12:18:00ID:???http://URL/APP/controller/action でも
http://URL/APP/controller/action/
でもアクセスできるから,自システムへのリンクを張るときに相対パスで
<a href="../otherAction/">
とか書くと上の2種類の場合でアクセス先が変わってしまうんだが
こういう時はどうすればいいの?相対パスは無理?
0784nobodyさん
2008/01/10(木) 21:07:34ID:???基本的には無理なんじゃないかな。
面倒だけど
{$baseUrl}/controller/otherAction
みたいなことにしてる。
0785nobodyさん
2008/01/10(木) 21:37:16ID:???Controller/Action/Parameterを引数にとるヘルパがあって
それを使って生成するもんじゃないかね
ZFにもUrlHelperってやつがあるよ一応
(リンクは生成してくれない、上記引数からhrefになるパスを生成するだけ)
デフォルトでリンク生成のヘルパすら無いZFもどうかと思うんだけど
0786nobodyさん
2008/01/14(月) 22:21:16ID:???フルパスで書いてる?それともinclude_pathに基底パス入れてる?
Modelも指定ディレクトリを参照してControllerと同名のファイルを自動で読み込んでくれればいいのに。
0787nobodyさん
2008/01/14(月) 22:26:41ID:???置き場所変わっても動くように相対でやるのが基本。
require dirname(__FILE__) . '/aaa/bbb/ccc/Hoge.php';
みたいに、そのスクリプトファイルからの相対で書く。
ちなみにModelを一気にrequireするときは
foreach (glob(Modelのディレクトリ . "*.php") as $path) {
require_once($path);
}
のようにする。
0788nobodyさん
2008/01/15(火) 04:22:21ID:???ありがとう。相対パスでやってみる。
ZFでこれだけモデルが冷遇されてるのは何故なんだろう。
他のFWではモデルも自動で読み込んでくれるようなんだけど。
0789nobodyさん
2008/01/15(火) 22:34:48ID:???0790nobodyさん
2008/01/17(木) 18:31:07ID:???Zendのコンセプトは疎結合なんだから、自動で読み込まれたら結合しすぎってことだろ。
0791nobodyさん
2008/01/17(木) 22:08:33ID:???0792nobodyさん
2008/01/17(木) 22:42:57ID:???ごめん俺よく分からないから適当なこといってると思う。
0793nobodyさん
2008/01/17(木) 22:48:02ID:???viewが自動でロードされるようになったのもだいぶ後になってから
結局疎結合過ぎてもっていう部分で
ようやくバランス取って来てる段階
0794nobodyさん
2008/01/17(木) 22:57:13ID:???guiceみたいにコードで書ける奴
0796nobodyさん
2008/01/20(日) 18:46:56ID:???スムーズにいなかなくて悩んでいたんだけど、setViewBasePathSpec()メソッドが肝だった。
これでZend_Viewとほぼ同じように扱える。
既に知っていた人、Smarty使ってない人は気にしないで下され。
0797nobodyさん
2008/01/21(月) 23:57:18ID:???ただphp_mysql.dllを読んでくれない・・・
php_mbstring.dllはよんでくれるんだけどなぁ。
0798nobodyさん
2008/01/22(火) 00:32:15ID:???0799nobodyさん
2008/01/23(水) 10:37:16ID:???今はもう人気ないのかな?
これってURL直下におかずに、外部から呼び出すタイプでおk?
0800nobodyさん
2008/01/23(水) 10:46:23ID:???0801nobodyさん
2008/01/23(水) 10:56:54ID:???ちょっと詳しく聞かせてもらおうじゃないか
今ZFダウソして、使ってみようと思うんだが
参考サイトとか何かないのかな
0802nobodyさん
2008/01/23(水) 11:04:00ID:???0803nobodyさん
2008/01/23(水) 11:19:24ID:???0804nobodyさん
2008/01/23(水) 11:39:57ID:???0806nobodyさん
2008/01/23(水) 12:03:44ID:???http://framework.zend.com/manual/videos
映像付きの解説。英語分からなくても流れくらいは分かるっしょ
0807nobodyさん
2008/01/23(水) 13:41:50ID:???--------------------------------------------------
<?php
require_once 'Zend/Controller/Front.php';
Zend_Controller_Front::run('/path/to/app/controllers');
これは、フロントコントローラのインスタンスとディスパッチを行います。
この結果、アクア本コントローラへリクエストが転送されます。
--------------------------------------------------
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in
C:\xampp\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php:198 Stack trace: #0
C:\xampp\php\ZendFramework\library\Zend\Controller\Front.php(929):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1
C:\xampp\php\ZendFramework\library\Zend\Controller\Front.php(233): Zend_Controller_Front->dispatch() #2
C:\xampp\htdocs\Project\ZendTest\index.php(3): Zend_Controller_Front::run('/path/to/app/co...') #3 {main} thrown in
C:\xampp\php\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php on line 198
いきなりこれかよZend死ね
0808nobodyさん
2008/01/23(水) 13:56:35ID:???いきなりも何もまだ続きがあるだろ
というかクイックスタートの終わりまでくらいは我慢しろよwww
おまえの限界クイック過ぎだろwww
0809nobodyさん
2008/01/23(水) 14:24:24ID:???ごめ、ちょっと先走った
コントローラー設置してみて、最初の
Zend::loadClass('Zend_Controller_Action');
の部分が「Class not found」になるんだけど、
index.phpでクラスをインクルードしてからコントローラーをインクルードしてるんじゃないの?
htaccessから直接コントローラーを呼び出しているとは思えないし・・・
0811nobodyさん
2008/01/23(水) 14:32:17ID:???適当に探してブログ見つけて読んでましたorz
記事見ると07/1/13だた・・・
マニュアルは何か飛び飛びでわからないので、
簡単なサンプルを解読していく感じにしているのですが、
そういったサイトを探すので手間取ったうえでやっと見つけた資料なのにorz
0812nobodyさん
2008/01/23(水) 14:42:16ID:???0813nobodyさん
2008/01/23(水) 14:47:57ID:???0814nobodyさん
2008/01/23(水) 14:48:33ID:???http://framework.zend.com/manual/ja/zend.controller.html
ここ通りやればとりあえずは動くよ
マニュアルわからないとか食わず嫌いして見ない方が回り道
飛び飛びと感じてもある程度全体の概念は先に掴んだほうが良い
0815nobodyさん
2008/01/23(水) 14:48:35ID:???http://framework.zend.com/manual/ja/zend.view.html#zend.view.introduction.view
0816nobodyさん
2008/01/23(水) 15:01:16ID:???そのマニュアルで呼び出してるのって、Zend_Loaderクラスだよ。
>811
つ http://codezine.jp/a/article/aid/1961.aspx?p=1
0818nobodyさん
2008/01/23(水) 15:07:57ID:???/Controller/.htaccessで自動的にAction.phpスクリプトを読み込むようにするのってアリかな?
毎回先頭にrequire_onceを記述するのがめんどう
0819nobodyさん
2008/01/23(水) 15:44:21ID:???Action.phpってZend/Controller/Action.phpのこと?
Zend/Controller/Action.phpはZend/Controller/Dispatcher/Standard.php
でrequire_onceしてるから、コントローラに書かなくてもおk。
Zend/Controller/Action.phpを継承したオレオレ_Controller_Actionクラスだと
require_onceしないとダメだけど。
自分なら.htaccessに書くんじゃなくて、index.phpとかに書くかなぁ。
0820nobodyさん
2008/01/23(水) 21:25:58ID:???0821nobodyさん
2008/01/23(水) 21:44:27ID:???0822nobodyさん
2008/01/25(金) 11:33:37ID:???Zend使ってるんだけど(始めたばかり)
モデルのところで、データベースアクセス関係作って、
必要に応じてコントローラから呼び出す形になるのかな?
入門書買ったけど、その辺が詳しく載ってない
データベースアクセス関係のスクリプトばっかりでどこに保存しとけばいいのかわかんない
0823nobodyさん
2008/01/25(金) 21:14:23ID:???0824nobodyさん
2008/01/26(土) 16:03:52ID:???どこで指定すればZFを読み込んでくれるの?
0826nobodyさん
2008/01/27(日) 00:36:20ID:???0829nobodyさん
2008/01/29(火) 11:01:17ID:???0830nobodyさん
2008/01/29(火) 11:35:06ID:???自分でパッケージ作っておくべきか
0831nobodyさん
2008/01/30(水) 03:34:39ID:???zendstudioだとこんなん
http://gyazo.com/c44d372fa9c49b8f426519bfc8050d58.png
0833nobodyさん
2008/01/30(水) 12:39:11ID:???0834nobodyさん
2008/01/30(水) 20:36:56ID:???してる
$this->_mail = new Zend_Mail(Zend_Mime::ENCODING_7BIT);
$this->_mail->setBodyText($str,Zend_Mime::ENCODING_7BIT);
0835nobodyさん
2008/01/30(水) 20:57:17ID:???0836nobodyさん
2008/01/30(水) 22:07:35ID:???0837nobodyさん
2008/02/01(金) 11:10:58ID:???JISで送るといいよ
そこはZendだけじゃなくPHPのmail関数でも一緒
(Zendもmail関数だっけ)
ところで、ディスパッチャ処理で$this->_forward("hoge", "hoge")って、
リダイレクトじゃなく呼び出し?
フロントコントローラ通さずに直接アクション呼び出してると思うんだが・・・
$_POSTデータもそのままだし・・・。
0838837
2008/02/01(金) 11:12:47ID:???0839nobodyさん
2008/02/01(金) 15:42:05ID:???0840nobodyさん
2008/02/02(土) 17:13:49ID:???/actionName でリクエストしても、Zend_View_Interface#renderに全部小文字で渡ってくるぽいので
デフォルトだと無理そうなのですけど、何か設定変えてやる方法ないでしょうか?
0841nobodyさん
2008/02/02(土) 17:39:49ID:???http://framework.zend.com/manual/ja/zend.controller.action.html
> アクションメソッド名が camelCase 方式の場合、 ビュースクリプトのファイル名では
> 単語が '-' で区切られることに注意しましょう。
だから、actionNameActionにすると
ビュースクリプト名はaction-name.phtmlになるけど
ビュースクリプト名もcamel caseにしたいということ?
viewRendererあたりに手を入れる必要があるんじゃないかと思う
コード追っかけてみるか、素直にデフォルトの規約でやるかだな
0842nobodyさん
2008/02/02(土) 18:21:28ID:???0843nobodyさん
2008/02/02(土) 19:20:48ID:???0844nobodyさん
2008/02/02(土) 19:25:23ID:???0845nobodyさん
2008/02/04(月) 14:10:35ID:???そう。ソース追ったら、
$this->getViewScript($this->_request->getActionName());
でViewRendererから呼ばれる
Zend_Controller_Action_Helper_ViewRenderer#_translateSpec
でtolowerしてました。Renderer変えないとだめそうです。
/controller-name/action-name (url) -> ControllerName#actionNameAction (controller) -> controller/action-name.php (view)
がZend推奨ぽいですね。
>>842
>>844
そうですね。これドキュメントまちがってますね。
0846nobodyさん
2008/02/04(月) 14:14:16ID:???> $this->_mail = new Zend_Mail(Zend_Mime::ENCODING_7BIT);
こっちは new Zend_Mail('ISO-2022-JP'); ですよね?
しかし、ヘッダー関連足すときに自分でencodeしないと変なエンコーディングになって面倒・・
0847nobodyさん
2008/02/04(月) 22:51:58ID:???ああ、ごめん、確かに間違ってたわ
__construct($charset='iso-8859-1')
なのね
0848nobodyさん
2008/02/04(月) 22:58:45ID:???setBodyText($str,'ISO-2022-JP',Zend_Mime::ENCODING_7BIT);
ですな
まぁラッパークラス作ればエンコーディングの指定は毎度毎度やらないだろうからいいんじゃないかな
0849nobodyさん
2008/02/05(火) 13:18:44ID:???今度出る1.5では「FooController::CamelCaseAction」が「foo/camel-case.phtml」になるらしい
ttp://tdiary.ishinao.net/20080204.html#p01
0850nobodyさん
2008/02/05(火) 15:07:24ID:???アンダースコアはpath delimiterに使われてるからか
url: controller/action_name
action: actionName()
view: controller/action_name.phtml
が一番しっくりくるんだけど
0851nobodyさん
2008/02/06(水) 12:07:54ID:P8eN/dUP0852nobodyさん
2008/02/06(水) 23:02:38ID:???controller/action/引数名/値/引数名/値/
ってリクエストの形式だけど、
controller/action/値/値/
の形式でgetParam(0)とかで引数参照できるようにできないのかね。そっちのほうが好きなんだが。
0853nobodyさん
2008/02/07(木) 00:46:59ID:???http://framework.zend.com/manual/ja/zend.controller.router.html
Zend_Controller_Router_Rewrite
のあたりと、getParamsを使うと少し幸せになるかもよ
0855nobodyさん
2008/02/07(木) 10:26:05ID:???■ このスレッドは過去ログ倉庫に格納されています