トップページ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/
0686nobodyさん2010/11/13(土) 09:44:11ID:YYAlO5qe
>>681
ちょっと違う
ブートストラップは、リソースを初期化してコンテナに保存する所なのよ。
つまりこう

protected function _initTest() {
$test = new stdClass;
$test->foo = "bar";
return $test;
}

とやるとtestという名前でコンテナ(レジストリ)に保存されるから、
あとはコントローラでもモデルでもビューでもどこからでも
ZendRegistry::get('test')->foo;
てやれば取り出せる

フロントコントローラとかビューとかDBとか良く使うリソースは、それ用のプラグインがあって、
初期値だけiniファイルで与えてやればコード書かなくても勝手に作られるようになってる。
0687nobodyさん2010/11/13(土) 10:24:40ID:???
>>685
/* @var $name ClassName */
を駆使すりゃどうにでもなるだろ
まぁ無駄なコードは増えるが
0688nobodyさん2010/11/13(土) 10:47:24ID:???
タイプヒンティングもオーバーロードもやらないで柔軟に開発するってのが元々のPHPの設計思想だろ
だからハッシュだとか可変引数だとかの議論はナンセンス
0689nobodyさん2010/11/13(土) 10:54:25ID:???
思想なんて変わってんのに、もともとのPHPの設計思想なんかに縛られてる方がナンセンス。
0690nobodyさん2010/11/13(土) 11:35:43ID:???
>>687
それはタイプヒンティングでは無い。

>>688
そんな事は名言されていない。
思想時に無かった故に、継ぎ足しされてカオスなコードになっているだけ。知ったか乙。
0691nobodyさん2010/11/13(土) 12:00:49ID:???
>>689
縛られてなんかないよ。
PHPでもやろうと思えばできる、やってもいいしやらなくてもいい、
ただ元々の設計思想が違うんだからJavaと同じようにできるわけがない、だからPHPがどうとかJavaならどうとかいう議論自体が無意味。
むしろ、OOP的に書かねばならないという方が凝り固まっているよ。

>>690
明言されてたら無条件に従うのか?w
思想時って何かよく分からないけど、上述の通りスタートが違うんだから仕様が違って当然。
カオスになって付いていけない?Perl的な書き方もC的な書き方もJava的な書き方もできるようにしましょう、ってだけの簡単な話だと思うが。
別に使うか使わないかはユーザの自由だよ。
0692nobodyさん2010/11/13(土) 12:22:25ID:???
まあ>>688はナンセンスって言ってるだけで
議論の価値そのものを否定してるわけではないだろうし
そうしてる間にも俺はオナ禁してるわけで
0693nobodyさん2010/11/13(土) 12:50:16ID:???
>>691
論点ずれすぎ。日本語でおk。
0694nobodyさん2010/11/13(土) 14:09:27ID:YYAlO5qe
おまえら引数にそうとうなこだわりがあんだな。

そんなことよりzendの話しようぜ。
>>686 たいぶ間違ってた、みんなごめん。ZendRegistry::set()/get()も簡単で悪くないと思うけど。

リソースが保存されるのはブートストラップの中にあるZend_Registryインスタンスだった。
だからアクションでtestリソースを得るには、
$this->getInvokeArg('bootstrap')->getResource('test')->foo

モデルとか外部から呼ぶときは、やっぱフロントコントローラのインスタンスからブートストラップを
とってくんのかな・・なんかまわりくどいような。

quickstartでDBアダプターどうなってんだろうと思って調べたら・・・!なんとで、Zend_Db_Tableの
staticなクラス変数にデフォルト値としてアダプタのインスタンスを突っ込んでたw
たしかブートストラップのリソースプラグインあたり
0695nobodyさん2010/11/13(土) 17:25:56ID:YYAlO5qe
いろいろ調べたんでまとめさせてください。というか間違いがあったら指摘して欲しい

Zend_Applicationを使うときの話です。
リソースプラグインを書かず、一般に俺々リソースを注入するには

まず application.ini に
oreore.foo = bar

Bootstrapで、
protected function _initOreore()
{
$oreore = new Oreore($this->getOption('oreore'));
//または
$oreore = new Zend_Config($this->getOption('oreore'));
//または
$oreore = $this->getOption('oreore');
// または
Oreore::setDefaultOptions($this->getOption('oreore'));

return $oreore;
}

アクションコントローラで、
$this->getInvokeArg('bootstrap')->getResource('oreore')->foo

モデルで使うには、
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('oreore')->foo

またはアクションコントローラでモデルをnewするときに、
$this-_oremodel = new Oremodel(
$this->getInvokeArg('bootstrap')->getResource('oreore')
);
0696nobodyさん2010/11/13(土) 17:28:27ID:???
>>691

PHPそのものはともかく、ZFでは基本的にOOP推奨な気がするけど。
0697nobodyさん2010/11/13(土) 17:30:24ID:???
>むしろ、OOP的に書かねばならないという方が凝り固まっているよ。

むしろ、フレームワークって凝り固めてブレを減らすためのツールじゃないの?
0698nobodyさん2010/11/13(土) 18:43:11ID:???
反応ないな(´・ω・`)
リードオンリーなら2番目の
return new Zend_Config($this->getOption('oreore'));
禿げしく推奨
0699nobodyさん2010/11/13(土) 21:54:53ID:???
フォーム表示用のアクションと
検証を行うアクションを別にするとどうもしっくり来ない
検証エラーがあった場合に表示させることを考えると同じメソッドにした方が楽だけどそのへんどう?
0700nobodyさん2010/11/14(日) 12:36:29ID:cYG57qWr
BootstrapでGET、POST取得する方法ないのん?
0701nobodyさん2010/11/14(日) 20:41:27ID:???
>>697
フレームワークはOOPではない
0702nobodyさん2010/11/14(日) 21:38:53ID:???
Bootstrapの_init***で
$this->bootstrap('Request');
がなぜ使えないという事を聞いてるんですか?
普通に $_GET や $_POST 使えばいいのでは
0703nobodyさん2010/11/15(月) 07:59:13ID:???
>>701
日本語でおk
0704nobodyさん2010/11/15(月) 13:31:06ID:???
>>701
??
0705nobodyさん2010/11/15(月) 13:40:11ID:???
>>679 >>680
返事ありがとございます。
保存したい値を追加したURLへリダイレクトするようにします。
0706nobodyさん2010/11/15(月) 16:55:25ID:5FHMT34S
Zend FrameworkでPDO_Mysqlを使っております。
最後にデータベースに格納したauto_increment_idを取得する場合、
last_insert_id()に値する関数はありますか?
(ちなみにZend_Dbを使っております)
0707nobodyさん2010/11/15(月) 17:07:49ID:???
>> 706
こんなふうに DbTable でやっています。
$this->insert($data);
return $this->_db->lastInsertId();

0708nobodyさん2010/11/15(月) 19:35:02ID:tul9B6Yr
Zend触り始めたけど結構活発で良かった

エラーの質問ですが
An error occurred
Application error
と出てエラー内容が出ないのですが、どこで設定できるのでしょうか
宜しくお願いします
0709nobodyさん2010/11/15(月) 22:49:00ID:???
>>707
insertの戻り値でもプライマリキー取れるよ。

>>707
http://framework.zend.com/manual/ja/learning.quickstart.create-project.html
Configurationの項目見る、環境変数はhtaccessで設定するようになってたと思う
0710nobodyさん2010/11/16(火) 07:53:24ID:Rh5mS6i1
>>709
あちがとうできました!
お陰でエラーの原因を突き止めやすくなりました
0711nobodyさん2010/11/16(火) 09:45:32ID:???
>>708
.htaccessかhttpd.confに
SetEnv APPLICATION_ENV development
0712nobodyさん2010/11/16(火) 10:41:07ID:???
>>709
そうだったんですね。orz
情報ありがとうございます。
0713nobodyさん2010/11/19(金) 19:11:59ID:???
ZFのModuleって使えそうで使えないな…
該当モジュールにルーティングされようとなかろうと、
常に全モジュール初期化されるって仕様はどうなの。
モジュール別にPlugin動かしたりしたいのにわけわからなくなるだろ・・・
意味なくね?
0714nobodyさん2010/11/19(金) 19:21:11ID:???
逆にモジュールごとに初期化するのメンドクサってのがphperのレベル。
豪にイラズンバゴウに従え。
0715nobodyさん2010/11/19(金) 21:29:39ID:???
モジュールは構成が複雑になるだけで、使い勝手微妙だよな・・・

というかZend_Controller系全般が微妙
0716nobodyさん2010/11/21(日) 15:42:08ID:???
>>695
亀ですまんが、モデルからFrontController参照するのは筋が悪いと思う。
モデルの単体テストが難しくなる。

サービスロケータでも作ってモデルインスタンス取得を初期化し、
そこでセットしてあげるのがいいんじゃないかな。
単体テスト時はsetUpでセットしてあげれば良いし、
モックをセットするようなことも簡単になる。
0717nobodyさん2010/11/22(月) 11:29:12ID:???
おおそういう意見を待ってたのよ。でもまあ議論したいわけじゃなくて
だいたいこうやっときゃ齟齬ないよってのが知りたいだけなんだけど。

たしかにモデルからFrontController参照するのは都合悪そうですな。
やっぱモデルのコンストラクタに必要なリソースを入れるのが普通ですかな。
0718nobodyさん2010/11/22(月) 16:21:21ID:???
>>700
Bootstrapでリクエストオブジェクトを使うには、自分でリソース化しなきゃだめ。
やり方はリファレンスガイドのZend_Applicationあたり参照。

リクエストオブジェクトってリソースって扱いじゃないみたい。
フロントコントローラで作られて、ルーター、ディスパッチャやコントローラーで共有してるって感じ。
0719nobodyさん2010/11/24(水) 15:59:17ID:???
その編の単体テストとか考えてプログラミングしてる香具師がphpの場合は皆無だしなあ。
htmlやjavascript並にちゃんと表示されて動けばいいジャンで終わってるし。
0720nobodyさん2010/11/24(水) 16:08:32ID:???
字面だけだと解りにくいし
どっかに日本語で講義してるサイトとかあればいいなぁ
0721nobodyさん2010/11/25(木) 23:18:34ID:???
ZFってプラグインとかプラグインリソースとかコントローラーとか、
シングルトンだと思ってたらinitが何度も呼ばれてたりしてよくわからん。。
0722nobodyさん2010/11/27(土) 01:59:15ID:???
oopはinit呼ばれまくりなのは基本。ウザイならクラスを上書きすれば。
0723nobodyさん2010/11/27(土) 15:01:11ID:PanI73UW
class IndexController extends Zend_Controller_Action {
public function init(){
echo $this->view->render('index/header.phtml');
exit();
}

正しくheader.phtmlは出力されるのですが、

$this->_helper->layout->header =$this->view->render('index/header.phtml');

として、
レイアウトスクリプトの中で、

<?php echo $this->layout()->header; ?>

としても何も出力されません。
なぜ出力されないのでしょうか?

0724nobodyさん2010/11/27(土) 15:23:52ID:???
$this->layout()->header = $this->view->render('index/header.phtml');
0725nobodyさん2010/11/27(土) 15:38:07ID:PanI73UW
>>724さん、ありがとうございます。

しかし、何も表示されないです・・・・。

0726nobodyさん2010/11/27(土) 23:57:44ID:???
$this->header = $this->view->render('index/header.phtml');

<?php echo $this->header; ?>
0727nobodyさん2010/11/29(月) 15:27:10ID:???
>>722
わかって端折って書いてるんだろうけど、字面どおりだとなんだかなーなかんじ。
0728nobodyさん2010/11/29(月) 22:14:24ID:???
http://zend.localhost/testにアクセスすると以下メッセージが出ます、
基底クラスからコントローラー付きの_forwardが使えないのって仕様なんでしょうか?バグなんでしょうか?
require_once APPLICATION_PATH . '/controllers/AbstractController.php';
class IndexController extends AbstractController
{
public function adultAction()
{
die("adult");
}}
require_once APPLICATION_PATH . '/controllers/AbstractController.php';
class TestController extends AbstractController
{
public function init()
{
$this->setup();
}
public function indexAction()
{
// action body
}}
class AbstractController extends Zend_Controller_Action
{
protected function setup()
{
// $this->_forward("adult", "index");
$this->_forward("adult", "index");
//$this->_redirect("/index/adult");
}}
0729nobodyさん2010/11/30(火) 10:35:10ID:???
リファレンスのアクションコントローラーのとこ嫁
_forwardはinitじゃなくてpreDispatchで使う仕様。
無駄を省くためわざとそうなってんのかな。
0730nobodyさん2010/11/30(火) 15:54:28ID:???
Zend_Applicationをコマンドラインから使えるか試してみました。
そこまでして…という気がしなくもなくなってきたんですがまあせっかくなんで。

[command-line : production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.error_repotring = -1
phpSettings.log_errors = 1
resources.frontController.throwExceptions = 1
resources.frontController.noErrorHandler = 1
resources.frontController.noViewRenderer = 1
resources.frontController.disableOutputBuffering = 1
resources.layout.layoutPath =
resources.layout.layout =
 ↑残念ながらiniの値はunsetすることができずlayoutは作られてしまう。
  どこかでdisableLayout()する必要がある。

あとはindex.phpのようなやつから以下のようにアプリケーション起動
My_は空っぽのやつを作る必要がある。たしかレスポンスのsendHeaders()は空メソッドでオーバーライド

Zend_Layout::startMvc()->disableLayout();

$application->bootstrap()
->getBootstrap()->getResource('FrontController')
->setRequest(new Zend_Controller_Request_Simple($action, $controller, NULL, $params))
->setRouter(new My_ZendControllerRouterRouteCli())
->setResponse(new My_ZendControllerResponseCli());
$application->run();
0731nobodyさん2010/11/30(火) 16:28:36ID:???
すみませんちょっと説明不足でした。
既存のアプリケーションのリソースやコントローラーを利用して
コマンドラインからほげほげするというものです。
0732nobodyさん2010/11/30(火) 19:39:50ID:???
>>730
いいね。
もっと試してみてレポよろしく。
07337282010/12/03(金) 19:24:14ID:zaEZnwnp
そうだったのですね、知りませんでした。どうもありがとうございます。
0734nobodyさん2010/12/03(金) 19:48:49ID:???
ZendFrameworkを習うのに、お勧めのチュートリあったら教えてください。
0735nobodyさん2010/12/03(金) 20:39:31ID:???
英語わかるならyoutubeに動画がある
0736nobodyさん2010/12/04(土) 10:56:51ID:???
掲示板を作ってるんだけど、ログインした人のみ投稿できるようにしようと思う。
zf固有の質問でなくて申し訳ないが、WEBアプリの一般的なロジックとして、
投稿時に投稿内容と投稿者キーをDBに挿入する為には投稿者キーはcookieで保持し続けるのだろうか?

0737nobodyさん2010/12/04(土) 12:26:29ID:???
なんで偉そうなの?
0738nobodyさん2010/12/05(日) 02:33:40ID:???
>>736
先生!CookieにはセッションID以外いれ無いと思います!
07397342010/12/05(日) 06:34:05ID:???
>>735
見てみました。
でも超英語ですね。
全然理解できませんでした・・・

ともあれ情報ありがとう。
0740nobodyさん2010/12/06(月) 13:16:53ID:???
よお!!みんな!!
736だぜ!!

Zend_Authですべて解決した。
よい子はちゃんとドキュメントを読むように!!

以上だ


0741nobodyさん2010/12/07(火) 17:17:46ID:???
>>740
頼むからそんなんで解決とかやめてくれ…
フレームワークは楽をする為のものであって
原理知らずに出来ちゃう便利な道具じゃないんだよう
せめて、Zend_Authの挙動を理解してから使ってくれよ

>>738
最近は暗号化してCookieに全部放り込むのもありだな
ガラケー死ぬけど
0742nobodyさん2010/12/08(水) 10:39:51ID:???
741>>

って言うんだったらお前がさっさと教えてやれよ

0743nobodyさん2010/12/08(水) 11:19:43ID:???
そのアンカーのつけ方流行ってんの?
0744nobodyさん2010/12/08(水) 16:45:27ID:???
743>>
まあ落ち着け。
0745nobodyさん2010/12/08(水) 17:11:03ID:???
<744>
そういうレスは煽りって言うんだぜ低脳
0746nobodyさん2010/12/08(水) 21:32:11ID:???
745<<    (越えられない壁)    <<俺
0747nobodyさん2010/12/09(木) 12:13:32ID:Z4PxvFs5
Zend_AuthはIDorPassに値ないとエラーになるから使うのやめたわ
catchでエラー処理すんのもめんどくさい
0748nobodyさん2010/12/09(木) 15:20:40ID:???
>>747
最初は俺もZend_Auth継承したクラスつかったりしてたけど、
Zend_Authあんまり意味ないよね。
今は独立したクラスで実装してるわ。
0749nobodyさん2010/12/09(木) 21:35:22ID:???
Zend_AclもZend_Authも微妙だよな・・・汎用的故に、独自に拡張し辛い。
そういう箇所に限ってプロジェクト毎に処理ロジックが変わったりするし、
結局自作の認証/権限クラスを作るのがベストだと思った。
0750nobodyさん2010/12/11(土) 12:44:49ID:???
>>749
「そういうとこは自分で書いちゃいなよ!」ってのも
ZFの魅力じゃないか。
0751nobodyさん2010/12/15(水) 09:01:50ID:rTeq7LP8
Zendで作ってあるシステムのサンプルみたいなのってない?
できれば小中規模のもの
0752nobodyさん2010/12/15(水) 09:23:09ID:???
本買えば付いてると思う
0753nobodyさん2010/12/15(水) 16:16:05ID:???
でも自分で作るのならzfの意味無いw
0754nobodyさん2010/12/18(土) 13:33:22ID:???
CakePHPからZFに転向した者です。

クラス設計が素直で自然であり、メソッド等の名前が判りやすく、品質の高さを
感じました。

ZFを知り、CakePHPが糞だってことに気づきました。
あ〜早めに気づいてよかった!
0755nobodyさん2010/12/18(土) 15:52:16ID:???
でもCakePHPのほうが仕事あったりするよね
0756nobodyさん2010/12/19(日) 03:41:25ID:???
無いよ
0757nobodyさん2010/12/19(日) 10:03:56ID:???
特定のブローカーがFWの仕事押さえてるから回ってこないお( ^ω^)
0758nobodyさん2010/12/20(月) 10:28:03ID:???
ZFって基盤だけ使ってあとは自分で作成するのがベストだよな
0759nobodyさん2010/12/20(月) 19:04:35ID:BA8UBi3n
ZF バージョン1.10を使用しています。

http://localhost/Hoge/fuga/
ブラウザからアクセスをするとApacheのエラーログに
PHP Notice: Use of undefined constant nul - assumed 'nul' in (ZFをインストールしているディレクトリ)/Zend/Controller/Dispatcher/Standard.php on line 262
と出力されてしまいます。

当該箇所には
$controller = new $className($request, $this->getResponse(), $this->getParams());
と記述されているだけなので、'nul'というのがどこから来ているのか検討もつきませんでした。
$classNameにはHogeが入って来ていました。。。
Noticeが出る原因は何が考えられますか?

よろしくお願いします。
0760nobodyさん2010/12/20(月) 19:36:44ID:???
ZFの初学におすすめの本を教えてください。
(PHPは使えますがフレームワークは初めてです)

田舎なので立ち読みできず、AmazonのZF関係の
コメントなども少ないので・・・
0761nobodyさん2010/12/20(月) 20:05:05ID:???
>>760
http://framework.zend.com/manual/ja/
0762nobodyさん2010/12/20(月) 22:24:17ID:???
ZendのMVCのディレクトリ構造を使いつつ、コントローラープラグインを使ったり作ったりする方法を知りたいのですが、どこかに資料はないでしょうか?
公式のマニュアルを見たのですが、プラグインを有効にする方法などが載っていませんでした。
検索したところ、海外のブログでいくつか見つかるくらいで、正しい方法がわかりません。

一応自分の見つけた情報をまとめておきます。

http://framework.zend.com/manual/ja/zend.controller.plugins.html
公式のマニュアル、プラグインをどこに登録するのか等がわかりませんでした。
http://codezine.jp/article/detail/2341?p=3
MVCを使ってない例
http://doremi.s206.xrea.com/zend/etc/plugin.html
正常に動作しない例

http://www.waysoflife.be/general/zend-front-controller-plugin-redirect-after-login-2/
プラグインをapplication.iniに書いて使う方法
http://blog.ekini.net/2009/06/04/registering-your-custom-plugins-in-zend-framework-18/
http://spokefire.co.uk/blog/2010/4/how-to-create-a-zend-controller-plugin
プラグインをbootstrapに書いて使う方法

application.iniに書く方法とbootstrapに書く方法は一応正常に動作しますが、
公式のマニュアルとはまったく違う方法でプラグインを読み込んでるので、これが本来の正しい方法なのかわかりません。
よろしくお願いします。
0763nobodyさん2010/12/20(月) 22:48:41ID:???
別に好きな場所に置いてnewしてregisterPluginで登録すればおk
0764nobodyさん2010/12/20(月) 23:07:07ID:???
>>763
newを書くファイルって何が相応しいんでしょうか?
あとZend_Controller_Front::getInstanceを書く場所もわかりません。
0765nobodyさん2010/12/20(月) 23:34:09ID:???
>>764
別に好きなファイルでいいのでは?
bootstrap.phpでもいいしindex.phpでもいい
0766nobodyさん2010/12/20(月) 23:39:02ID:???
あと試してないけどController内でもできるんじゃないかな
0767nobodyさん2010/12/21(火) 11:55:55ID:???
ルールもそれほどなく、本当に自由に実装出来るのがZFの良いところ。
実装次第でパフォーマンスや効率も変わってくるだろうし。

ただ、何も考えずルールに則って作りたい場合にはどうしても不向きだね。
あと使う人によって実装が異なってくるから、ルール作らず複数人で開発してしまうとごちゃごちゃする
(ZFに限った話じゃないけど)
0768nobodyさん2010/12/21(火) 23:26:15ID:???
ZFに限った話じゃないならZF関係ないじゃん
0769nobodyさん2010/12/22(水) 00:16:15ID:???
SymfonyやCakeは良くも悪くもガチガチだろ
0770nobodyさん2010/12/22(水) 10:31:49ID:???
Zend_Db_Tableってテーブルごとに作成しますよね。
(TemplateMethodに法った場合)
その場合ってmodel扱いでいいんですかね

class UserTable extends Zend_Db_Table
{
   protected $_tableName = "user";
}
0771nobodyさん2010/12/22(水) 23:20:20ID:???
えっ
0772nobodyさん2010/12/23(木) 15:14:15ID:8j0z9BIK
Zend_Formでフォームを作っているのですが、デフォルトではform要素の中にdl要素が入り、その中にコントロールはdd要素、ラベルはdt要素で挿入されると思いますが、dtあるいはdd要素の中にspan要素を挿入したいです。

public function indexAction(){
$form =new Zend_Form;

$form->clearDecorators();
$form->addDecorator( 'FormElements' )
->addDecorator( 'HtmlTag', array( 'tag'=>'dl', 'id'=>'controlPane' ) )
->addDecorator( 'Form' );
$form->setMethod('post')->setAction('/regist/add');
$form->setAttrib('id', 'registForm');

$form->setElementDecorators( array( 'ViewHelper', 'Label', array( 'HtmlTag', array( 'tag' => 'dt' ) ) ) );

$counroty =new Zend_Form_Element_Select('country');
$counroty->setLabel('言語');
$counroty->setDescription('<p>test</p>');
$counroty->addDecorator('Label', array('tag'=>'dt', 'class' => 'controlTitle' ) );
$form->addElement( $counroty );

$this->view->assign( 'form', $form );
}
今はこうなっています。
$counroty->setDescription('<p>test</p>');
で所用を達成できるかと思ったらうまくいきませんでした。
どうすればいいでしょうか?

0773nobodyさん2010/12/23(木) 16:15:08ID:???
>>772

$decorator->setOption('escape', false);
0774nobodyさん2010/12/23(木) 16:27:38ID:8j0z9BIK
>>773
お返事ありがとうございます。
出かけないといけなくなりました。
後ほど正しく動作するコードが書けたら報告いたします。


0775nobodyさん2010/12/24(金) 15:05:03ID:qkiZtUnD
ZendFrameworkは公開フォルダ内(例えば/htdocs/zf)にindex.phpとrewriteを有効にするために、
.htaccessを設定する必要がありますが、ここで質問があります。

この場合セキュリティが心配なのですが、どのようにhttpd.confを設定すればいいのでしょうか?
自分は基本的に.htaccessを使いたくない為に<Directory />、<Directory "/usr/local/apache2/htdocs">内で、
AllowOverride None
を設定しているので、本やネットに載っていなかった為に自分で勝手に
<Directory "/usr/local/apache2/htdocs/zf">
Options -Indexes -FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride all
Order allow,deny
Allow from all
</Directory>
と、ZFを使用するには設定せざるを得ませんでした。
ZFがapplicationディレクトリ以下をどのように使用するのかを詳しく分からない為にAllowOverride allにしましたが、
これではAllowOverride all等セキュリティに不安が残るような気がします。

現に、公開フォルダ外に置いたはずの/application/ディレクトリ内のファイルのパスの指定の仕方でさえも(自分には何故作用するのか仕組みが分かりませんが)rewriteエンジンが作動しているようで、offにするとZFが働かずエラーになります。
つまり公開フォルダ外の/application/ディレクトリにも.htaccessが作用しているとなるとセキュリティ上一体どう設定すればいいのか分かりません。
皆さんはどのようにして設定されているのでしょうか?
また、ZF使用時のApache関連の設定方法を詳しく説明しているサイト等ありませんでしょうか?

SymLinksIfOwnerMatchを設定しているのは、
[error] [client 127.0.0.1] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /usr/local/apache2/htdocs/zf/controller/request
等と出たために、FollowSymLinksは絶対に指定したく無かったために加えました。
0776nobodyさん2010/12/24(金) 15:31:58ID:???
ちがうちがう そうじゃ そうじゃない
0777nobodyさん2010/12/24(金) 15:37:03ID:???
>>775
3行にまとめてくれ
07787592010/12/24(金) 16:59:30ID:lpwJZIX8
今週ずっと原因を調べてたんですが、
結局わからずじまいでした。

どなたか何か思い当たる節があれば
アドバイス頂けないでしょうか。
0779nobodyさん2010/12/24(金) 17:26:11ID:???
100%再現する問題なら簡単に切り分けられると思うけど
0780nobodyさん2010/12/24(金) 18:05:10ID:???
>>778
再現できるソースをくれ
07817752010/12/25(土) 16:06:14ID:???
>>スリーセブン
rewriteエンジンが非公開ディレクトリまで及んでいるようですが、ZFで公開するディレクトリ、そして公開しないWebコンテンツのアプリケーションディレクトリの為の
httpd.confの設定はセキュリティの観点から皆様はどのように設定していますでしょうか?
パーミッションは一応設定していますが、上記に書いた自分の設定ではどうも不安なのですが、セキュリティ的に大丈夫なのでしょうか?
0782nobodyさん2010/12/25(土) 16:08:58ID:???
>>781
そういうことなら
http://framework.zend.com/manual/ja/project-structure.rewrite.html
0783nobodyさん2010/12/26(日) 17:27:17ID:A6fFNaAD
Zend_Formのデコレータについて教えてください。
デフォルトではフォームはdlタグで囲まれ、ラベルはdtタグで囲まれ、コントロールはddタグで囲まれると思いますが、ddタグの中にテキストボックスとセレクトボックスなど複数のコントロールをいれたいと思っています。
ラベルは一つです。

生年月日:[テキストボックス]年 [セレクトボックス]月 [セレクトボックス]日

このようなイメージです。

Zend_Form_Decorator_Abstract派生クラスを用意して、
private $_element2; /* 二つ目の要素 */
private $_element3; /* 三つ目の要素 */

public fuction setElement2( $element2 ){/* 割愛 */} /* 二つ目のフォーム要素をセットする */
public fuction setElement3( $element2 ){/* 割愛 */} /* 三つ目のフォーム要素をセットする */

public function buildInput(){
/* 割愛 コントロールを三つ並べてddタグで囲む */
}

このようなデコレーターを作るのかな・・・と思ってはいるのですが、、、
Zend_Form->addElement(XXX)する際、三つのコントロールを同時にaddする方法がわかりません。
どのようにすればいいでしょうか?

0784nobodyさん2010/12/31(金) 13:53:33ID:???
初心者です。

Bootstrap内に変数を宣言しておき、それを
コントローラのメソッド内から参照したいのですが、方法がわかりません。
どうしたら良いのでしょうか?
0785nobodyさん2010/12/31(金) 13:58:04ID:???
がいしゅつ
■ このスレッドは過去ログ倉庫に格納されています