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

Zend Framework Part3

■ このスレッドは過去ログ倉庫に格納されています
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/
0454nobodyさん2009/08/05(水) 12:20:15ID:???
日本のZend Frameworkは、糸冬ですか?
0455nobodyさん2009/08/05(水) 12:27:09ID:???
なんでやねんノシ
0456nobodyさん2009/08/05(水) 13:00:06ID:qtFRGhoH
hoge.jp/ctrl1/act1/var1/val1、hoge.jp/ctrl2/act2/var2/val2、hoge.jp/ctrl3/act3/var3/val3 って具合に
各コントローラのアクションを実行するのに必要なパラメータと値があると思いますが、
このパラメータ値を取得するのはフロントコントローラだけですべきなんでしょうか?
感覚的にはそれぞれのコントローラのアクション中でとった方が無駄がなくていいというか、
直接的でわかりやすい気がします。
「ZendFW徹底入門」て本にはフロントコントローラで取得または設定して、個別のコントローラで
$front = Zend_Controller_Front::getInstance();
$res->setBody($front->getParam('var'));
ってする手順が紹介されてます。

みなさん、この手順に従ってるんですか?というか絶対なのかな。
別のやり方をする場面があれば、どういう方法とシチュエーションか教えてもらえると嬉しいです。
よろしくお願いします。
04574512009/08/05(水) 13:39:12ID:???
>>452-453
正式に対応するまではこれでいけますね。
勉強になります。
0458nobodyさん2009/08/05(水) 13:58:24ID:???
>>456
Zend_Controller_Actionを継承してるとして

$this->getRequest()->getUserParam('var');
$this->_getParam('var');

パラメータはリクエストだからかっこよく決めたいんだったら上を使う感じ。


しかしマニュアルのバグまでissueに報告してからの対応ってのはどうなのかね。
0459nobodyさん2009/08/05(水) 16:59:32ID:qtFRGhoH
>>458
ありがとうございました
うまくいきました
0460nobodyさん2009/08/05(水) 17:01:26ID:NDvODuDu
日本語マニュアルredirectの無限ループしてるみたいですね。
負荷かかってそうだけど気づかないもんなのかな?

サポートのcontact usのフォームに知らせといたけど・・・
問い合わせいっぱい来てるだろうし、放置なのかね?
0461nobodyさん2009/08/05(水) 21:36:01ID:???
>>454, 458
何を言いたいのかわからない

>>455
同意
04624582009/08/05(水) 21:51:38ID:???
>>461
突っかかる意味が分からない
0463nobodyさん2009/08/05(水) 23:13:33ID:???
公式は1.9出したというのに、マニュアルが死亡。
無限ループとかいつまでやってんだ?
0464nobodyさん2009/08/05(水) 23:36:02ID:WMeCBWWn
あと数時間でマニュアル復旧っぽいです
0465nobodyさん2009/08/05(水) 23:39:51ID:???
日本語ドキュメントをダウソしてchmに変換して使ってる。
1.5あたりのままだけど('A`)
そろそろ作り直そうかなと思ったが、どうやって作ったか思い出せね。
0466nobodyさん2009/08/06(木) 00:57:23ID:JPFTqmJZ
新しいバージョンが出て、今までのと置き換えた時にトラブル起きたことなんてある?
そんな心配いらないものかな?
0467nobodyさん2009/08/06(木) 01:18:07ID:4RIcoEog
>>466
ある。
たまに仕様変わってたり
0468nobodyさん2009/08/06(木) 01:25:05ID:???
ないわけないw
0469nobodyさん2009/08/06(木) 01:42:02ID:???
>>467,468
こわいなー、必要なコンポーネントだけを移植するようにした方が良いのかな
丸ごと変えて検証って大変だもんなー
0470nobodyさん2009/08/06(木) 02:14:25ID:4RIcoEog
>>469
必要なコンポーネントだけとかやってると、後から余計に面倒になると思うよ
0471nobodyさん2009/08/06(木) 07:29:59ID:???
>>466
トラブルが怖いなら、テストを書こう
0472nobodyさん2009/08/06(木) 09:44:22ID:???
Cucumber + Webrat みたいにブラウザを使わないテストツールってないかな。
Selenium はブラウザの起動がうざくて。
0473nobodyさん2009/08/06(木) 10:14:18ID:iMOTjzQq
ドキュメント復活
0474nobodyさん2009/08/07(金) 18:42:35ID:???
zendFWで、モジュール構成とSmartyを両立させてやっています

smarty使うと、テンプレートキャッシュを吐き出しますよね、そのファイル名が
%%3B^3B8^3B8EC026%%index.tpl.php となっています。
これは文字化け起こしてるのではないかと思いますが、普通ですか?
文字化けだとしたらどうしたら良いでしょうか?

zendFWにあまり直接関係なくてすみません。
0475nobodyさん2009/08/07(金) 20:02:04ID:???
普通です。
0476nobodyさん2009/08/07(金) 20:33:03ID:???
もじばけってやつはもっとやう゛ぁい。
2byte以上のよく分からないのが混じりだしたら要注意
0477nobodyさん2009/08/08(土) 00:40:29ID:???
>>475,476
ありがとうございました
0478nobodyさん2009/08/08(土) 12:13:59ID:???
>>465
ミカエルが作ったchm使えばいいんじゃね
http://mikaelkael.fr/Zend-Framework-1-9-x-documentation.html
0479nobodyさん2009/08/08(土) 16:56:36ID:JPFTqmJZ
zend framework徹底入門って本利用されてる方いますか?
利用してる方で、ModuleとSmarty併用してる方がいたら質問したいんですが…
0480nobodyさん2009/08/08(土) 17:31:49ID:???
>>479
その本に連携のサンプル載ってるじゃん
04814792009/08/08(土) 17:54:23ID:JPFTqmJZ
>>480
ありがとうございます。
そうなんですが、あの本によるとドキュメントルートの下にapplicationフォルダ置きますよね
それなら確かに動くんですが、普通の利用を考えてドキュメントルートの上に
applicationフォルダを移動すると動かないんです。

これ、マルチポストというかだまし討ちみたいになるの嫌なので正直に書きますが
著者のサイトの質問コーナーに投稿してるんですけど返事もらえないんです。土曜だし。。
http://keijiban.msn.to/top.jsp?id=bv6673
出来ればここで同じ本を参考にしてる人に聞きたいと思ってきたんですが、
ダメでしょうか?

上で書いたように、applicationフォルダを移動させても動いていますか?
0482nobodyさん2009/08/08(土) 18:09:05ID:???
エラーと該当個所のソースを張りなさい
0483nobodyさん2009/08/08(土) 18:09:52ID:???
あとDispatchのパス指定とか
04844792009/08/08(土) 18:11:30ID:JPFTqmJZ
>>482
本当にすみません。わからない点が2つあるんですが(上の質問サイトから貼ります)

http://192.168.0.3/zend/controller_view/smarty
で確かに動作するのを確認しました
しかし、理解できないことがあります
疑問1)
P227での図5.5ビュースクリプトのパス解決に寄れば
tplファイルの所在は
./application/smarty/smarty(モジュール名)/smarty(コントローラ名)
/index.tpl(アクション名)になるのではないですか?
実際には./application/smarty/templates/default/smarty/index.tplになっ
ています。
特に、defaultディレクトリの意味がわかりません。

疑問2)
また、サンプルの/controller_viewの中身を取り出して、
/var/www/application
/var/www/html/.htaccess
/var/www/html/index.phpとして
http://localhost/smarty/を実行してみましたがエラーが起きます
(フロントコントローラのapplicationへのパスは変更してあります)

続きます
04854792009/08/08(土) 18:15:00ID:JPFTqmJZ
続き

出力されるエラーは
[Fri Aug 07 15:54:04 2009] [error] [client 192.168.0.7] PHP Fatal
error: Uncaught exception Zend_Controller_Dispatcher_Exception with
message Inval id controller specified (error) in
/usr/lib/php/Zend/Controller/Dispatcher/Standard.php:241\nStack
trace:\n#0 /usr/lib/php/Zend/Controller/Front.php(9 36):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http),
Object(Zend_Controller_Response_Http))\n#1 /var/www/html/index
.php(19): Zend_Controller_Front->dispatch()\n#2 {main}\n thrown in
/usr/lib/php/Zend/Controller/Dispatcher/Standard.php on line 241
です。
何が原因なのでしょうか?
04864792009/08/08(土) 18:17:57ID:JPFTqmJZ
フロントコントローラ(/var/www/html/index.php)は以下の通りです
<?php
define('APP', '../application');
require_once 'Zend/Controller/Front.php';
require_once 'Zend/Controller/Action/Helper/ViewRenderer.php';
require_once APP.'/Zend_View_Smarty.class.php';

$front = Zend_Controller_Front::getInstance();
$front->setControllerDirectory(APP.'/controllers');
$view = new Zend_View_Smarty();
$render = new Zend_Controller_Action_Helper_ViewRenderer($view);
$render->setViewBasePathSpec(APP.'/smarty')
->setViewScriptPathSpec(':module/:controller/:action.:suffix')
->setViewScriptPathNoControllerSpec(':action.:suffix')
->setViewSuffix('tpl');
Zend_Controller_Action_HelperBroker::addHelper($render);

//$front->setParam('noViewRenderer', TRUE);
$front->dispatch();
0487nobodyさん2009/08/08(土) 19:05:21ID:???
>>484
モジュールディレクトリの指定がちゃんと出来てなさそう。
$front->addModuleDirectory()
それと $front->setBaseUrl() も出来てないから、
defaultモジュールになっているんじゃ?

>>486
> $render->setViewBasePathSpec(APP.'/smarty')
> ->setViewScriptPathSpec(':module/:controller/:action.:suffix')
> ->setViewScriptPathNoControllerSpec(':action.:suffix')
> ->setViewSuffix('tpl');

だから、

> ./application/smarty/templates/default/smarty/index.tpl

templatesがどこで出てきたのか失念しちまったが、他は指定通りになってるね。
./APP/smarty/templates/:module/:controller/:action.:suffix

ZF徹底入門は持っていないから、的外れならスマソ。
04884792009/08/08(土) 19:41:03ID:JPFTqmJZ
>>487
ありがとうございます
じっくりそのお返事読み込んで対応したいと思います
また質問することになったらすみません
本当にありがとうございました
0489nobodyさん2009/08/08(土) 22:54:11ID:???
>>478
サンクス。
今落としてみたけど、目次ペインは文字化け、キーワードタブなしだった。
やっぱり暇見て作り直すよ。
0490nobodyさん2009/08/08(土) 23:16:15ID:???
>>489
できたらちょーだいな
04914892009/08/09(日) 05:25:45ID:???
作った。
どこかのロダへ上げりゃいいのだろうけど、どこがいいのか調べるのも面倒なので、ブログに上げといた。
ttp://imadetato.com/item/365
0492nobodyさん2009/08/12(水) 16:33:11ID:???
Zend_Db_Tableでグループ化するとキーが "table"."hoge" (クオーテーション含む)みたいになって扱いにくいので、
table.hoge として扱うことは出来ないでしょうか?
現状ではキーの取得のため $data['"table"."hoge"'] みたいにして取得しています。
0493nobodyさん2009/08/14(金) 22:41:36ID:???
まず服を脱ぎます
0494nobodyさん2009/08/15(土) 23:23:59ID:???
質問です。

CentOS 5.3 (PHP 5.1.6) + Zend Framework 1.9.1 で View ヘルパーの headLink 試してみたところエラーになりました。
headLink の getContainer() に ksort メソッドが無いというエラーでした。
調べていくと最終的には SPL の ArrayObject に ksort メソッドが存在しない、というところに行き着きました。
ArrayObject の ksort メソッドは PHP 5.1.0 以上ですのであるはずなのですが…
php.ini の設定や yum のインストールで何とかなるものでしょうか?
よろしくお願いします。

以下に yum でインストールした PHP の RPM を記します。
php-5.1.6-23.2.el5_3
php-bcmath-5.1.6-23.2.el5_3
php-cli-5.1.6-23.2.el5_3
php-common-5.1.6-23.2.el5_3
php-devel-5.1.6-23.2.el5_3
php-gd-5.1.6-23.2.el5_3
php-imap-5.1.6-23.2.el5_3
php-mbstring-5.1.6-23.2.el5_3
php-mcrypt-5.1.6-15.el5.centos.1
php-mhash-5.1.6-15.el5.centos.1
php-mysql-5.1.6-23.2.el5_3
php-pdo-5.1.6-23.2.el5_3
php-pear-1.4.9-4.el5.1
php-pgsql-5.1.6-23.2.el5_3
php-snmp-5.1.6-23.2.el5_3
php-soap-5.1.6-23.2.el5_3
php-tidy-5.1.6-15.el5.centos.1
php-xml-5.1.6-23.2.el5_3
php-xmlrpc-5.1.6-23.2.el5_3
0495nobodyさん2009/08/16(日) 00:58:56ID:???
>>494
細かい事はわからんが、一応1.9.0から5.2.4以上推奨だったお。
0496nobodyさん2009/08/16(日) 19:22:09ID:???
Zend_Application_Bootstrapを使用しています。
application.iniを指定して情報を読み込んでいますが、
その情報をコントローラ内から読み取るにはどうすれば取得できるでしょうか。
0497nobodyさん2009/08/17(月) 14:22:21ID:???
configから取れば良いんでない?
0498nobodyさん2009/08/17(月) 22:15:51ID:GH8UY0nu
>>496
public function indexAction()
{
$options = $this->getInvokeArg('bootstrap')->getOptions();
}

これで取れると思う。
0499nobodyさん2009/08/18(火) 16:19:10ID:???
>>498
ありがとうございます。でけました。

>>492の情報もあればお願いします。
0500nobodyさん2009/08/18(火) 16:36:34ID:???
>>499
カラム名に別名付ければ良いんでない?
0501nobodyさん2009/08/18(火) 21:46:09ID:???
Zend_Validateを動的に使うときって、毎回
require_once('Zend/Validate/StringLength.php');
require_once('Zend/Validate/Alnum.php');
require_once('Zend/Validate/Alpha.php');
require_once('Zend/Validate/Iban.php');
とか並べにゃならんの?
0502nobodyさん2009/08/18(火) 22:50:59ID:???
autoload使えば並べなくてもいいけど、
パフォーマンスは割と落ちる。
0503nobodyさん2009/08/19(水) 12:08:12ID:???
>>500
ちょっと詳しくお願いします。
AS hogeみたいにするってことでしょうか?
0504nobodyさん2009/08/19(水) 13:07:53ID:???
えっ?
0505nobodyさん2009/08/19(水) 14:48:26ID:???
>>503
そう
0506nobodyさん2009/08/20(木) 09:49:21ID:???
zf.sh create project quickstart
ってやると
Action 'create' is not a valid action.
てエラーになるんだけど、なんで?
PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)
05075062009/08/21(金) 12:26:09ID:???
俺だけかよ...orz
ちなみにsvnのstandard/trunk最新版でも同じだた
0508nobodyさん2009/08/21(金) 12:44:36ID:???
そんくらいコード見て直せよ
0509nobodyさん2009/08/21(金) 14:35:04ID:???
>>508
おま簡単なことみたいに言うなよ。めちゃ難しかったよ。
ああ言われたとおりコード追跡したよ、解決したよ。
でもぜってえ教えねえ、ググってここに来た奴ざまあw








ヒントはシンボリックリンクな
0510nobodyさん2009/08/21(金) 14:50:07ID:???
// no links allowed here for now
if ($item->isLink()) {
continue;
}
0511nobodyさん2009/08/21(金) 15:46:36ID:???
大丈夫 zf 使ってる人自体レアだから!
0512nobodyさん2009/08/21(金) 21:57:27ID:???
>>506
Google Trendsでは日本語は10位にも入っていません。
http://www.google.co.jp/trends?q=zend+framework

多くの国の人が使う英語でレポートするか、
http://framework.zend.com/issues/secure/Dashboard.jspa

下記の国々で利用される機会が多めなロシア語でレポートすると
・旧ソ連諸国
・東欧圏
・それらの国からの移民が6分の一を占めるイスラエル(Zend Technologyはここ)
http://zendframework.ru/

きっと今よりも幸福になれると思いますよ
0513nobodyさん2009/08/22(土) 10:43:35ID:???
if (1) {
$this->_forward('hoge');
}
todo();

IndexController::indexAction()内の処理で、上記のようにフォワードしたあとに下の処理が続行されてしまいます。
elseで囲ってやる以外にフォワードしたら下の処理を行わないようにする方法はないでしょうか?
0514nobodyさん2009/08/22(土) 14:23:39ID:???
$this->_forwardの次の行にreturn;を書くとか
0515nobodyさん2009/08/22(土) 14:52:21ID:???
>>514
!!!!
!!!!

thanks desu
0516nobodyさん2009/08/22(土) 23:24:18ID:???
Zend Frameworkにサイトマップを作成する機能はありませんか?
バリデータは存在しました。
0517nobodyさん2009/08/23(日) 13:31:15ID:???
>>491
htmlのソース見れば分かるけど、?になってるのは " " (26 23 31 36 30 3B)だよ。
%20か に置換してやるか、消してからsjisに変換してやればおk
0518nobodyさん2009/08/23(日) 14:08:05ID:???
Zend_View()のエスケープ時のエンコードの設定をbootstrapでやりたいのですが、
$view = new Zend_View();
$view->setEncoding('utf-8');
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setView($view);
以外に方法はないでしょうか?
getInstance()的なのがあるとありがたいのですが
0519nobodyさん2009/08/23(日) 15:49:38ID:???
getEngine
0520nobodyさん2009/08/23(日) 16:04:16ID:???
>>519
結局Viewを作成しなければならないみたいですね。
public staticなものはないようですね。
0521nobodyさん2009/08/23(日) 18:59:09ID:???
Smartyをレイアウトに組み込んでるんだが、どうにもうまくいきません。
↓エラーはこんな感じです。
[plugin] modifier 'sanitize' is not implemented

modifierの'sanitize' を読み込むように設定されてるみたいなので、
↓この部分をコメントアウトしましたが、変化なし。
$this->_smarty->default_modifiers=array("sanitize");

sanitizeでプロジェクト内を文字列検索してみましたが、それっぽい
記述がなくて困ってます。どうしたら、解決しますか?

参考URL
http://wadslab.net/2008/03/zend_view_smarty/
0522nobodyさん2009/08/24(月) 21:39:16ID:???
ZendFrameworkを使うことを前提とした、フリーのPHPプログラムはないですか?
プログラムは掲示板でもブログでもなんでもいいのですが、
「ZendFrameworkはこう使うべきである!」みたいな強烈なコードを読みたいです。
0523nobodyさん2009/08/24(月) 21:43:21ID:???
公式マニュアルのサンプル読むと使い方も載ってるよ
0524nobodyさん2009/08/24(月) 22:08:56ID:???
モデルの設計とか
効率的な使い方とか
そういうのを参考にしたいんだろう
俺は知らん
0525nobodyさん2009/08/25(火) 01:33:59ID:???
ttp://www.magento-jp.com/
0526nobodyさん2009/08/28(金) 13:40:37ID:???
1回のアクセスごとに処理が2回行われているようなのですが、原因が分かりません。
フロントコントローラ部分(index.php)のdispatch以前に以下のようなコードを記述すると2回記録されています。
file_put_contents('./hoge.txt',microtime(true)."\n",FILE_APPEND);
よろしければ他のサーバーの方上記の結果をお願いします。

XREA+CGIモードでPHPを動かしていますが、同じような方いらっしゃいませんか?

.htaccessは以下の通りです
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
RewriteRule ^.*$ index.php [L]
0527nobodyさん2009/08/28(金) 17:04:52ID:???
httpサーバのアクセスログはどうなってる
そのRewriteルールだと、実態のないディレクトリ・ファイルは
全部フロントコントローラに投げる設定になってる
0528nobodyさん2009/08/28(金) 19:04:06ID:???
>>525
Magentoのソースってすんごく読みにくいんだけど
0529nobodyさん2009/08/28(金) 20:22:32ID:???
>>527
favicon.icoを取得しに来ていました。
おっしゃっている通り、該当ファイルがないためこっちにリクエストが来ていたようです。

しかしその問題は解決したのですが、フィルター処理が2回行われてしまっています。
マニュアル通りZend_Filter_Interfaceを継承してコントローラ内で$this->view->setFilter('Filtername')をしています。
書き換え処理を行わず、Zend_View_Filter_Filtername::filter()内に先ほどのロギング処理を追加すると2回記録されています。

動作環境は先ほどの通りです。
フィルターを使用している方に同様の現象はありませんでしょうか?

0530nobodyさん2009/08/31(月) 02:25:49ID:qG683i9+
zend_dateでカレンダーを出力したいんだけどどうしたら良いですか?
自分の考えでは、
1)2009-08-01をスタートにループまわして(どの月でも30回)、
2)日にち部分を02,03と一つずつ増やして、
3)出来た日付(2009-08-32)を検証し、日付として不適切なら出力停止
…という感じです。
が、いかにも頭悪そう。スマートな実現方法を教えてくれると嬉しいです。
どんな風に作ったら良いのか、皆さんご意見お願いします。
0531nobodyさん2009/08/31(月) 03:10:03ID:???
JavaScriptを使えばいい。
jqueryとかYUIとか
0532nobodyさん2009/08/31(月) 03:23:02ID:???
「Zend_Dateで」って言われるとこんな感じかな?

$s = new Zend_Date('2009-08-01');
$e = clone $s;
$e->add(1,Zend_Date::MONTH);
do {
echo $s->toString('d') . "\n";
$s->add(1,Zend_Date::DAY);
} while ($d->isEarlier($e));
0533nobodyさん2009/08/31(月) 03:23:45ID:qG683i9+
>>531
ありがとうございます! javascriptですか…、確かに一発で表示してくれる機能ありますね
phpとzendFW(zend_dateほか)だけで作るとしたらどうしたら良いでしょうか?
スケジューラーのイベント一覧みたいにしたいんですが
というか、>>530のやり方で問題ないでしょうかねぇ? 自分で思うほど変じゃないかな?
慣れ親しんだこれまでと同じやり方でやるってのは進歩がないようで落ち着かないんですが…
0534nobodyさん2009/08/31(月) 03:26:39ID:qG683i9+
>>532
おお、こんな時間にありがとうございます
do while文?がもうよくわからないですが、、
今このソースを貼り付けて実行したら、真っ白な背景に1とだけ表示されました
どういう結果を表示するプログラムなんでしょうか?
0535nobodyさん2009/08/31(月) 03:37:33ID:???
>>534
最後の行をtypoしてた
} while ($s->isEarlier($e));

と最初の行は
$s = new Zend_Date('2009-08-01',Zend_Date::ISO_8601);
ってしておいた方がいいかな。
0536nobodyさん2009/08/31(月) 03:54:27ID:???
いちいち、サーバーサイドで生成するのも面倒じゃない?
携帯サイトなの?
0537nobodyさん2009/08/31(月) 04:35:41ID:???
>>535
わー、全ての日付が出ました! ありがとうございます!
コードの解読から始めます。ホントにありがとう

>>534
携帯向けとPC向け両方です。
javascriptで作る方法紹介してくれた人ですか?
今の自分のスキルではajaxとかまで手が回らないしPHP,zendの知識を深めたいので
とりあえずこちらのやり方を選びました。ありがとうございました。
0538nobodyさん2009/09/05(土) 22:07:05ID:Dg9afmXE
zendFWでpearのPager使ってる人います?
今利用してるんですが、ページ送りが動作しません。リンクを押してもずっと最初のページのままです。
原因がこれなのかはわからないですが、
/hobby/user/123
にセットしたPegerのリンクを押していくと
/hobby/user/123/?pgr=2
/hobby/user/123//?pgr=3
/hobby/user/123///?pgr=1
となっていきます。(ページ番号を押した分だけ?前の/が増えていく)
これはzendFWでPager使った場合の正常な動作なんでしょうか?

Pagerの利用自体は、同じサイトないのzend領域外のページで成功してるので
まちがいはないつもりですが、zendFWで特別に注意するポイントがあるのかな?

ご意見いただけると嬉しいです。よろしくお願いします。
0539nobodyさん2009/09/05(土) 23:22:04ID:???
Zend_Paginatorてのがあってだな
0540nobodyさん2009/09/05(土) 23:31:58ID:???
>>539
うわあああ ホントだ!1日無駄にした!
どうもありがとう。。。
0541nobodyさん2009/09/06(日) 00:45:20ID:???
まあ最初の方はなかったものだしね

Zend_ArchiveとZend_Mediaまだー?
0542nobodyさん2009/09/06(日) 01:09:18ID:JiBjCO1T
>>540です。教えてもらって今zend_paginator触りだしたんですが、これの長所として
「指定したクエリにマッチするすべての行を取得するのではなく、
DbSelect アダプタや DbTableSelect アダプタは 現在のページの表示のための必要最小限のデータのみを取得します。」
ってあるけど、これってクエリ結果をzend_cacheでキャッシュ化しておくよりも全然有利ってことかな?
イメージ的にはキャッシュにした場合の方が負荷とか楽そうだけど…
(データのアップデートにあわせて抽出できるというのはわかるけど)

あと、ページングのIDや対象アクション・コントローラを設定する.iniを作る必要があるみたいだけど
複数のアクション(コントローラ)にページャーつける度にこういう設定ファイル用意するのかな?
共通化できないものなんだろうか。
実際に利用されてる方、これってPear::pagerよりも便利ですか?
0543nobodyさん2009/09/07(月) 13:45:48ID:???
>>542
ただ単に使う時に使う分だけfetchしますよって話だったと思う
使ったことないけど確か簡単にZend_Cacheと組み合わせれたかと

たぶんZend_Controller_Router_Route使うって事だと思うけど、設定ファイルは普通1つでいいよ
ルート毎にpageってパラメータの受け取り方を書くだけ
Router使わないんだったらコントローラのなかで setCurrentPageNumber($this->_getParam('pid'))
かな、、あんまりお得はないと思う

共通化については、コントローラで言うとgetPaginatorぐらいかな、共通の親クラスにでも突っ込めばおk
viewについては、ページネイタ用のパーシャル作っとけば大抵使い回しできるよ(Router必須)

ってイメージ和姦だろうな〜 まず使って見れ
0544nobodyさん2009/09/07(月) 15:42:13ID:???
共通化のとこ、余談だけど
よっぽど似てる処理なら同じコントローラの同じアクションにルーティングしてしまうってのもありかもな
$routeName = $this->getFrontController()->getRouter()->getCurrentRouteName();
switch ($routeName) {
}
$this->render($routeName);
0545nobodyさん2009/09/08(火) 00:37:49ID:???
これ何?

http://www.amazon.co.jp/Zend-Framework-Official-Programmer-Reference/dp/1430219068
0546nobodyさん2009/09/08(火) 02:27:55ID:???
>>545
This is a book. You see?
05475422009/09/08(火) 02:38:09ID:???
>>543-544
ありがとうございました
正直チンプンカンプンです。zendFWの構造の理解不足が露呈してしまった
もう一度マニュアル読み直しから始めます。ありがとう
0548nobodyさん2009/09/08(火) 21:53:51ID:qSoCHGpf
以下の形でクエリを実行すると(Zend_DB)、エラーになります。が、引数の$uId,$uType,$limitを直接?の部分に入れて
プリペアドステートメント方式(?)をやめてクエリすると結果が返ってきます
何が原因でしょうか?

function report($uId,$uType,$limit){//$evYmはYYYY/MM
 $table1 = $this->_config->table->table1;
 $table2 = $this->_config->table->table2;
 $table3 = $this->_config->table->table3;
 $rs = $this->_db->fetchAll("
  SELECT
  {$table1}.reportTitle ,
  {$table2}.evName ,
  {$table2}.evDay ,
  {$table3}.player ,
  FROM (
  {$table1}
  LEFT JOIN {$table2}
  ON {$table1}.evId = {$table2}.id
  )
  LEFT JOIN {$table3}
  ON {$table1}.evId = {$table3}.evId
  WHERE {$table1}.uId = ?
  AND {$table1}.uType = ?
  ORDER BY {$table1}.evDay, {$table2}.startTime1
  limit ?
  ",
  array($uId,$uType,$limit)
 );
 return $rs;
}
0549nobodyさん2009/09/08(火) 22:01:21ID:???
SQLクエリ覗くか、エラーメッセージ読めばいいんでない?
0550nobodyさん2009/09/08(火) 22:28:35ID:???
>>549
どういうわけか limitをLIMITと大文字にしたら解決しました
その後limitに戻しても動作してます
わけわからないですが解決しました。ありがとうございました。
0551nobodyさん2009/09/11(金) 15:51:16ID:???
原因不明のままでも解決すれば満足してしまうのか・・
0552nobodyさん2009/09/11(金) 18:36:33ID:???
>>551

テキトーなレベルが多いんだよ
0553nobodyさん2009/09/12(土) 06:36:52ID:???
PEARのQuickFormを使っていた身にとって、Zend_Formはなかなか慣れない。
特にfreeze()メソッドが無いあたりが...。
Zend_Configで要素を定義できるのは楽なんだが、その分表示で苦労するというか
なかなか頭が切りかわらねぇ(´・ω・`)
■ このスレッドは過去ログ倉庫に格納されています