トップページphp
983コメント418KB

Pear

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ってどうよ。
0478nobodyさん04/05/11 11:53ID:dmRD31gk
バージョンのせいは考えられるでしょうか。
サーバー PHP Version 4.1.2
開発環境 PHP Version 4.3.4
0479nobodyさん04/05/11 11:57ID:???
>>477
include_path が空だということは DB.php は、

require_once('/path/to/DB.php');

でロードしている訳だよね。 PEAR.php は DB.php から、

require_once('PEAR.php');

のようにロードされているから include_path が空の場合は読み込みが失敗す
るのは自明のこと。 include_path に DB.php までのパスを設定できれば解決
する。 ini_set が使えるなら次のようにしてみるといい。

ini_set('include_path', '/path/to');
0480nobodyさん04/05/11 13:52ID:dmRD31gk
>479
ありがとうございました。
しかし、ini_setはしましたが、まだうまく行きません。

Fatal error: Call to undefined function: is_a() in /home/xxxx/xxxx/PHP/DB.php on line 431

431行目は
function isError($value)
{
return is_a($value, 'DB_Error');
}

0481nobodyさん04/05/11 14:21ID:???
>>480
include_pathになんて入れたの?
そのエラー文からだと、/home/xxxx/xxxx/PHP としたのか?

つーか、やる気ある?
0482nobodyさん04/05/11 14:38ID:???
>>480
is_a() 関数は 4.2.0 以上から使えるようだ。
http://jp.php.net/manual/ja/function.is-a.php

各 PEAR パッケージが要求する依存関係リストを確認して必要なら下位バージ
ョンを使うとよい。
0483nobodyさん04/05/11 16:12ID:???
ちなみに is_a() の問題は is_a() の >>482 にあるマニュアルページの contributed notes に下位バージョンでの互換用関数のコードがある.
DB.php を読む前に定義しとけば下位バージョンでもひとまず動作はするよ.

# つーか,エラーメッセージも読まずに「わかりません,やってください」なんてのは php-users でやってくれ(w

あと老婆心ながら.開発環境の方が新しいバージョンなのはトラブルの元になるからヤメた方が良い.
0484nobodyさん04/05/12 01:18ID:???
PEARのサイトがUTFになってから
IEが何故か自動認識してくれず化けまくり
同じ症状の人います?
何か原因があるのかな・・・
0485nobodyさん04/05/13 10:47ID:???
pear install xxxをすると、ダウンロードはしてくれるんだけど、
その後全く動かなくなってしまうのですが、なぜでしょう?

pear download xxxでモジュールのみダウンロードして
pear install xxx.tgzをしても同じく止まったままになってしまいます
0486nobodyさん04/05/13 18:06ID:???
「全く動かなくなる」のところをもうちょっと具体的に.

あと,先に手動で Archive_Tar あたりをアップデートしてから再挑戦してみるとか.
0487nobodyさん04/05/14 09:20ID:???
485です

環境を書き忘れていました。
サーバ:MacOSXServer 10.2.8
apache1.3.29+php4.3.4

具体的な現象は485に書いた通りです。
こんな感じ

[server:/Users/xxxxxx] xxxxxx# pear install auth
downloading Auth-1.2.3.tgz ...
Starting to download Auth-1.2.3.tgz (24,040 bytes)
........done: 24,040 bytes

これで止まってしまいます。この後、30分待っても応答がありません。

pearcmd.phpのソースを追っかけてみたら、>>486さんの言う通りArchive_Tar.phpの
_extractInString内にて処理が返ってこない現象が出ているようです。
(まだその中を追い切れてません)

Archive_Tarの手動アップデートを試してみます。
ありがとうございました。
0488nobodyさん04/05/18 16:44ID:???
2ch PEAR Wiki ですが編集しようとすると怒られてしまいます。

エラーメッセージは、

cmd=edit&page=[[xxx]] は有効な WikiName ではありません。

のようなものです。
0489nobodyさん04/05/19 00:22ID:???
Powered by PHP 5.0.0RC3-dev
つーのが臭い。。。こんなバージョンで運用する管理人さんって?
0490 ◆AngelH/kMI 04/05/19 01:17ID:???
うあー。
ごめんなさいごめんなさい。
PHP5対応暫定でしました。

HTTP_GET_VARS
HTTP_POST_VARS
HTTP_SERVER_VARS
HTTP_COOKIE_VARS

このあたり、PHP5からもう使えないんですね・・・。
0491nobodyさん04/05/19 09:25ID:???
>>490
PHP マニュアルの
http://jp.php.net/manual/ja/configuration.directives.php#ini.register-long-arrays

によると、php.ini の register_long_arrays を On にすると使えるけどパフォーマンスの
問題で Off にすることが推奨されている。

デフォルトは On と書いていて、PHP ソースに含まれる php.ini-dist では、On だけど、
php.ini-recommend を見ると Off になっているので、その影響かな。
0492nobodyさん04/05/29 14:44ID:???
DB_DataObjectって複数のデータを一括でinsertする方法は無いですか?
query()で書くしかない?
0493nobodyさん04/05/29 15:06ID:???
自分が知る限りでは,ないです.
0494nobodyさん04/05/30 23:45ID:???
今存在に気付いたんですけど pear.conf なんて前から
ありましたっけ?
0495nobodyさん04/05/30 23:56ID:???
config-setでsetされるので、4.3以降かな。
このCLIベースの永続セッションってどうやってつかうんだろ?
0496nobodyさん04/05/31 01:43ID:???
mojaviの質問、ここでいいんでしょうか…

ActionChainの仕組みが今ひとつわかりません。

http://mojavi.org/forum/viewtopic.php?t=433
を見て試してみてるんですが、
ActionChain::fetchResult()で戻ってくる結果ってどうやってセットするものなんでしょう。
049749604/05/31 02:35ID:???
やっと理解出来ました…。
これってob_start → ob_get_contentsで
そのモジュールのVIEWが出力してる値を保存してるだけだったんですね。
0498nobodyさん04/05/31 10:05ID:???
>>497
ご存じかもしれませんが、 milestone b2 の ActionChain にはバグがあるの
で注意して下さい。
http://pear.sakura.vg/index.php?%5B%5BITEMAN%5D%5D
0499nobodyさん04/06/02 10:19ID:???
>>492
複数のデータっていうのがどういうものなのかわかりませんが
私は配列で格納された複数のデータをforeachでautoexecuteする
メソッドを用意してそれで一括登録してます。
(って全然スマートじゃないですけど・・)
0500 ◆AngelH/kMI 04/06/02 22:36ID:???
複数のデータっていうのは多分
MDBで言うExecuteMultipleでinsertみたいな感じかと。
それなら、まあ499さんの言うようなラッパー書くしかないかな・・・。

しかし、DB_DataObject良いね。
今まで使ってなかったのはもったいなかったよ。
0501 ◆AngelH/kMI 04/06/04 01:39ID:???
ずっと聞こうと思っていた事をようやく思い出しました。

誰かmojavi + QuickFormで使ってる人いますか?
上手くやるとかなり楽出来るかな、とは思うのだけど
綺麗にまとめられない・・・。

良い実装例あったら見てみたいです。
0502nobodyさん04/06/04 11:02ID:???
>>501
使いまくってます。アレにも書くつもりですが、 サンプルを Wiki に載っけ
ておきましょうか?
050350104/06/04 13:40ID:???
>>502
む、出来たらお願いします〜。
0504 ◆AngelH/kMI 04/06/10 01:34ID:???
mojavi.orgがメンテ真っ最中らしい(笑
新しいトップが見えたり、ソースコードが見えたりしてる・・・。
こういう事故があるから、ドキュメントルート以下には最小限のコードしか置かない、
ってことなんでしょうね・・・。

そして
www.mojavi.org v2 released
June 9th, 2004
ですよ!
ついにきたー
0505nobodyさん04/06/10 13:49ID:???
>>504
これは Mojavi 2.0 リリースじゃなくてサイトがリニューアルされたというこ
とですよね。
dev.mojavi.org でこっそり公開されていた内容に置換されたみたいです。
0506nobodyさん04/06/10 21:51ID:???
>>505
俺が今朝書こうとして送信やめたレスとまったく同じ内容でびびった
0507 ◆AngelH/kMI 04/06/11 11:14ID:???
>>505
ああ、サイト変わったからそろそろMojavi2.0リリースかなぁという期待です(笑
0508nobodyさん04/06/11 23:44ID:???
Mojavi 2.0 リリースでしゅ。
0509nobodyさん04/06/11 23:58ID:u32wLhvU
>>508
2.0リリース&3.0スタートみたいね。
こんなもんまでありました。↓

[Mojavi 3.0 Manual]
ttp://wiki.mojavi.org:8080/99.html
051050904/06/11 23:59ID:???
ageてごめん。
0511 ◆AngelH/kMI 04/06/12 02:01ID:???
>>509
mojavi1からmojavi2が素晴らしい変化だったと思うので、
mojavi3にも超期待ですよ。

ただ、楽は出来るんだけどほんとにする事なくなりそう(苦笑
0512nobodyさん04/06/12 06:09ID:???
mojavi3がどんな風に改善されるかってどこかに
まとめてありますか?
0513nobodyさん04/06/12 06:50ID:???
それよりまずはmojavi2のドキュメントの充実を!!
0514 ◆AngelH/kMI 04/06/12 13:50ID:???
>>512
http://www.mojavi.org/forum/viewtopic.php?t=491
ここになるのかな。
PHP5向けでしょうかね。

>>513
激しく同意。
502氏の活躍が楽しみです


しかし、ドキュメントの充実って大変だよなぁ・・・。
PEARのほうも、明らかに足りていないし。
0515nobodyさん04/06/12 18:40ID:???
>>514
ありがとうございます。参考になりました。
とりあえず2.0.0をインストールしてみまして、index.phpとconfig.php
の設定は終わりました。version2用の crash course を読みながらトライ
してるのですが

WARNING [/usr/local/lib/php/mojavi/mojavi-all-classes.php:470]
Invalid configuration setting(s): ERROR_404_MODULE (Default) or ERROR_404_ACTION (PageNotFound)

http://localhost/mojavi/index.php?module=Default&action=Login
にアクセスするとこんなエラーが出ました。まずは自分でmodule?とやらを
作らないといけないんでしょうか。

どなたか最低限の開発の流れを教えていただけませんか?
ttp://dev.mojavi.org/images/diagrams/2.0/action_sequence.png
ここを見たけどいまいちピンときません。
0516 ◆AngelH/kMI 04/06/12 20:08ID:???
>>515
その通りで、自分でモジュール作らないとダメです。

で、警告が出ているのは
指定したモジュールが無い場合に表示するモジュール( Default / PageNotFound)が無いために出ています。

例えば、「module=Default&action=Login」と指定してるなら
webapp/modules/Default/actions/LoginAction.class.php
webapp/modules/Default/views/LoginView.class.php

あたりを作らないといけません。

自分は
http://pear.sakura.vg/index.php?%5B%5BMojavi%2FTutorial%5D%5D
これ見て覚えました。


それにしても、すっかりmojaviスレ(苦笑
面白そうなPEAR無いですかねぃ。
0517nobodyさん04/06/12 21:13ID:???
なるほど。モジュールのファイル名とパラメーターが対応してるんですね。
ttp://pear.sakura.vg/index.php?%5B%5BMojavi%2FTutorial%5D%5D
これは 2.0.0 でも問題なく使えるんでしょうか?
参考にがんばってみます。作者タンに感謝。

# なんかmojaviの話題ばっかですいません
0518nobodyさん04/06/13 22:21ID:???
じゃPEARの話題を無理矢理。というか助言ください。
Console_ColorをしようしてカラフルなCLIアプリを作ったのですが,
lessにパイプすると文字化けしてしまいます。
tcshでRedhatでScreenを使用しています。
lessってカラフルにはならなかったような気がするので、
文字化けしないようになれば充分です。
解決方法はあるのでしょうか?

// PHPでCLIページャを書くとかしてみようかな
0519nobodyさん04/06/14 01:21ID:???
今さらQuickFormの初歩的な質問です。

$elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes');
$elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '未確認', 'no');
$form->addGroup($elementValid, 'valid', '確認:', ' ');

こんな風にラジオボタンを作成したんですが、「確認済み」の方を
デフォルトでチェックしておきたい場合はどうしたらいいのでしょうか?

$elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes', array('checked' => 'checked');
としてもチェックが入りませんでした。
0520nobodyさん04/06/14 01:39ID:???
$form->setDefault( array( 'valid' => 'yes' ) );

とかそんなんだった気がするです.
0521nobodyさん04/06/14 04:04ID:???
Flexy使ってみたんですが compile() を呼出すとこんなエラーが出ました。
Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard.php on line 667
Warning: mb_strpos(): Unknown encoding or conversion error. in /usr/local/lib/php/HTML/Template/Flexy/Compiler/Standard.php on line 675

その後でこんなエラーが出ます
Parse error: parse error in /home/httpd/hoge/compiled_templates/flexy-static.html.en.php on line 51

これはテンプレートにマルチバイト文字が含まれてる場合だけに発生して
全部英数字の場合はうまくいきます。

php.ini で str* 関数をオーバーロードするように設定してたので、一旦
それを外したら上手く動きました。文字化けもしてないようなんで一安心
なんですが、mb_strpos じゃなくて素の strpos を使っててそのうち問題が
起きないか心配です。

このエラーはうちの環境だけで皆さんは普通に動いてますか?

0522 ◆AngelH/kMI 04/06/15 00:56ID:???
>>521
mb_系関数でのオーバーロードは使わないのが基本だと思う・・・。
mb_系使うときは明示的に指定すればいいわけで、
素の状態の関数が使えないのはやばい。
0523nobodyさん04/06/15 03:29ID:???
>>520
どうも。それでも駄目でした…
052452004/06/15 11:29ID:???
setDefault() じゃなく setDefaults() だったーってのはおいといて,
うちの環境では以下のコードで期待通りに動きます.

<?php
require_once 'HTML/QuickForm.php';
$form = &new HTML_QuickForm('test');
$elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '確認済み', 'yes');
$elementValid[] = &HTML_QuickForm::createElement('radio', null, null, '未確認', 'no');
$form->addGroup($elementValid, 'valid', '確認:', '?');
$form->setDefaults(array('valid' => 'no'));
$form->display();
?>

これでダメなら H_QF のバージョンが古いとかですかね……
0525nobodyさん04/06/15 12:45ID:???
quickform便利だけどpearとの整合性が取れないから
使えない。
0526nobodyさん04/06/15 12:47ID:???
pearじゃなくてsmartyデスタ
0527nobodyさん04/06/15 13:29ID:???
どゆこと?
0528nobodyさん04/06/15 13:51ID:???
HTML_QuickForm_Renderer_ArraySmartyの使い方がわからないから教えてくれってことじゃなかろうか。
0529 ◆AngelH/kMI 04/06/16 02:24ID:???
$qf =& new HTML_QuickForm_Renderer_ArraySmarty($smarty);
$form->accept($qf);

$smarty->assign('form', $qf->toArray());

これだけでわかりますかねぃ。
$smartyがsmartyのオブジェクト。
$formがaddElementとかしたQuickFormのオブジェクト。

んで、テンプレート側では
<form {$form.attributes}>
{$form.name.label} : {$form.name.html} {$form.name.error}
{$form.submit.html}
</form>

みたいに記述。
0530nobodyさん04/06/16 11:06ID:???
蛇足ながら補足.
HTML_QuickForm のドキュメント,ごたごたして見づらいけど,
先頭の方の addElement() とかしてる部分を読み飛ばせば解りやすいかと.

ttp://cvs.php.net/co.php/pear/HTML_QuickForm/docs/renderers/SmartyDynamic_example.php?r=1.2
ttp://cvs.php.net/co.php/pear/HTML_QuickForm/docs/renderers/SmartyStatic_example.php?r=1.2

つってもあたしゃお手軽な HTML_Template_Sigma 使いなので Smarty 使ってねーのですけどね(w
0531nobodyさん04/06/16 21:13ID:???
>>529
こういう風に使う場合、
TML_QuickForm_Renderer_ArraySmartyのコンストラクタって
smartyオブジェクトが引数になってるけど、
水面下のレンダラのクラス内でsmartyオブジェクト使って何やってるんだろう
今ソース追いかけてるんですけど今いちピンとこない・・・
053253104/06/16 21:16ID:???
TML_QuickForm_Renderer_ArraySmartyになってた
HTML_QuickForm_Renderer_ArraySmartyです
0533nobodyさん04/06/16 22:38ID:???
おーさんくす。
便利だなぁ。
pearのテンプレートもみてみます。
0534nobodyさん04/06/17 20:20ID:???
HTML_Template_Flexyがバージョンアップ。
テンプレートにはブロックやプラグインの機能が追加され、
Smartyのassign()のようにデータを登録するメソッドも追加された模様。

プラグインで変数の修正子を拡張できるようになったのが面白いけど
とりあえず今作りかけの2chビューワは0.8.2までのAPIだけで行こう。。。
0535nobodyさん04/06/20 06:04ID:???
データベース接続用のPEARクラスって
いろいろありますけど、
それぞれの違いを解説したサイトなんてありますか?
0536nobodyさん04/06/20 08:35ID:???
PEARは配布スクリプトに使うにはあまり適していませんねえ。
というのも、鯖によってPEARがインストールされているかどうかがまちまちだからです。
それなら、配布パッケージにPEARをはじめから添付させればいいじゃないかと
思われるかもしれませんが、
そうすると、
Fatal error: Cannot redeclare class pear in /usr/local/lib/php/...
といったエラーがでる可能性があります。
従って、PEARを使う場合にはユーザーにわざわざPEARが
インストールされているかどうか確かめてもらって
それによってスクリプトの設定を修正してもらう必要がでてきてしまいます。

まぁ、class_exists関数をいちいち書いてやればいいのですが・・

とにかく、何かと面倒ですよねぇ。。。
053753604/06/20 08:48ID:???
すいません、class_exists関数を使っても無理でした。。
0538nobodyさん04/06/20 09:34ID:???
>>536
ファイル検索パスをちゃんと設定してやれば無問題。
$_base_dir = dirname(__FILE__);
$_include_path = $_base_dir . PATH_SEPARATOR . $_base_dir . '/lib';
ini_set('include_path', $_include_path);
053953604/06/20 09:55ID:???
おぉっ
ありがとうっ
0540nobodyさん04/06/20 22:06ID:???
mojavi v2使おうとしても
ドキュメントが全くないんじゃないかな・・?
みんなどうしてるの。
わざわざコード読むなら、
自分にあった小規模なフレームワークを
自作しちゃえばいい気がするし・・・。
0541nobodyさん04/06/21 00:45ID:???
>>536
配布じゃなくてレンサバでなんだけど
.htaccess でinclude_pathを設定して/usr/lib/php/の下を丸ごとうpしたことがある
php_value include_path /home/sites/users/acount/web/lib
0542nobodyさん04/06/22 16:20ID:s1sNH/Zv
すいません、Pearの質問はここでいいんでしょうか?

Pearインストール後、DB接続をしようとすると

Call to undefined function: setfetchmode()

と出るんですが、setfetchmode()が定義されてないってことですよね?
setfetchmode()ってわざわざ手動で定義する必要があるんでしょうか?
原因のわかる方、教えてください。


関連するソースコードは以下の通りです

require_once("DB.php");
$config = "mysql://mysql接続設定";

$db = DB :: connect( $config, true );
$db->setFetchMode( DB_FETCHMODE_ASSOC );
0543nobodyさん04/06/22 16:24ID:???
>>542
接続に成功しているかどうかを確認するのが先でしょう。

echo DB::isError($db) ? '成功': '失敗';
0544nobodyさん04/06/22 16:26ID:???
DB::connect で失敗、とか。
0545nobodyさん04/06/22 16:34ID:???
>>542

dsn間違いで接続できてない。
$dbは、DBオブジェクトじゃなくて
DB_Errorオブジェクトが返ってきてるに1票
054654204/06/22 16:40ID:???
>>543-545
その通りでした。
今回Pearを初めて触ってみたんですが、素のPHPと違って
DB接続エラーとかデフォルトで吐き出してくれないんですね。

ありがとうございました。
0547nobodyさん04/06/22 17:24ID:???
PEAR::setErrorHandling() あたりも参考にしてみてください.
エラー時の振る舞いをこれで変更できます.
054854204/06/22 17:48ID:???
>>547
重ね重ねありがとうございます
0549nobodyさん04/06/22 17:55ID:???
そういや、DB::setErrorHandling() は無くなったのねん。
0550nobodyさん04/06/22 23:08ID:???
>>542
DBクラスの使い方についてはここが参考になると思う。
ttp://dokokano.com/php/php_pear_db.html
055154204/06/23 11:19ID:???
>>550
ありがとうございます。

なんだかこのスレは親切な人多いね
0552nobodyさん04/06/23 13:34ID:???
>>549
DB クラスは PEAR クラスを継承していないという驚きの事実
DB_xxx を返す factory のためだけのクラスだからですかね.
$db = DB::connect() して $db->setErrorHandling() なら可能なんでしょうかね.試してないけど.
0553nobodyさん04/06/23 19:28ID:???
>>552
できる
チェックコード書きたくないので
PEAR_ERROR_CALLBACKにしてる
0554nobodyさん04/06/26 23:01ID:???
0555nobodyさん04/06/27 00:20ID:???
0556nobodyさん04/06/27 17:11ID:???
0557nobodyさん04/06/27 19:38ID:???
0558nobodyさん04/06/27 19:39ID:???
0559nobodyさん04/06/27 19:43ID:???
0560nobodyさん04/06/27 19:45ID:???
0561nobodyさん04/06/27 22:13ID:???
工エェェェ(´Д`)ェェェエ工
056255404/07/01 14:18ID:???
>>554は実はシメジスレの誤爆だと白状してみる。

先日PHP質問スレでHTML_QuickFormの話がちょろっと出てて、
てか、前々から「便利だよ」と再三再四出ていた訳なんだが、
気にしつつ、マニュアルを見たらサクッと使える気がしなくて
敬遠してた。オサーソはなかなかついていけません。orz

んで、ちょっと使ってみた。スンゲー便利やん。
吐いたHTMLを見ると、タグの属性でalignやvalignを使ってるのねん。
別にW3C信者ってほどではないが、一部はCSSで指定しているんだし、
どうせならここらあたりもstyle属性で指定してくれりゃ... と思うのは
おらだけじゃないはず。きっと、デフォルト設定用メソッドが用意されているとは
思うが、もうどこかに、W3C信者用設定一式みたいなのはどこかに転がって、
Viewクラスのコンストラクタ辺りでHTML_QuickFormのインスタンス生成→Myデフォ設定
ってやってる方も居るはず。

そんなわけで、そこら周りのスクリプトだれか晒しぎぼんぬです。
056355404/07/01 15:29ID:???
あ、Smartyと連携させたらなんも出なくなった。
あーなるほど。
0564nobodyさん04/07/01 15:39ID:???
>>562
Default レンダラの吐く HTML は,テーブルレイアウトだし,まぁ「確認用」程度に思っておけばよろしいかと.
056555404/07/01 16:38ID:???
>>564
うぃうぃ、そのようですな。
そして、Smarty用レンダラのtoArray()で吐く変数を見るとheader関係とエレメント関係の配列が
同じ次元に格納されている。つかえねぇー。
エレメント部分だけ一つ掘った配列にしてくれりゃ、{section}でループさせるのに...
submit辺りは自分で書くからさぁ。
もうちっと格闘するか。
056656404/07/01 18:52ID:???
header エレメントって使ったことねーですわ……
上手な使い方がどーにも思いつかない orz
Default レンダラで使うならともかく,テンプレエンジンと組ませると,かなーり不要な気がする.
header を活用しまくってるって人いたら使用例を公開きぼむ.
056755404/07/01 22:23ID:???
>>566
チョト言い方悪かった。
headerエレメントというより、form全体のfrozen、javascript、attributes等と
同列の配列に、各エレメントの配列が並んでいるんですよ。
んで、素のtoArrayをみれば、ちゃんとエレメントは一つ掘っていました。
ちょっと何の為にSmarty用のレンダラが用意されているのか疑問。
正しい活用方法があれば教えて欲しい。
それか、toHtmlを書き直してごっそり押し込む方が楽が出来そう。
0568nobodyさん04/07/01 22:54ID:???
>>567
おそらく全く同じ疑問で悩んでる人発見
同列に並んでるからエレメントをループして表示させようとすると
いちいちfrozen、javascript、attributesを判断して抜かないとダメじゃん、
ってことですよね

結局俺もこれを解決する事ができずArraySmartyレンダラを諦めて
Arrayレンダラでやってます

ArraySmartyレンダラでこの問題を解決する方法ないもんでしょうか
自前でレンダラ書き直した方が速いのかな・・・
0569nobodyさん04/07/01 23:21ID:???
>>562
/lib/php/HTML/QuickForm/Renderer
にW3Cなモノを用意するとか。
0570nobodyさん04/07/02 03:14ID:???
ん〜、
is_array($element) && isset($element.html)
とかやってたかも
スマートじゃないですか、、そうですか |出口| λ............

昔あった SmartyDynamic レンダラとかはそういう仕様だった気がする。
057157004/07/02 03:18ID:???
そういう仕様ってのは
> んで、素のtoArrayをみれば、ちゃんとエレメントは一つ掘っていました。
のことね。

> ちょっと何の為にSmarty用のレンダラが用意されているのか疑問。
ってのは Smarty だけじゃなく、他のテンプレートエンジンを考慮した時に生きてくるんじゃないかなと思ったり。

# 酔いどれ中につき、いろいろと失礼。
0572nobodyさん04/07/02 09:56ID:???
自分は Smarty でなく Sigma & (ITStatic or ITDynamic) 使ってるんで外してるかもだけど,
ArraySmarty ってソースにも書いてある通り ITStatic をベースにした static レンダラだから,
{section} で回せるものを吐くようにはそもそも出来ていない(使い方が違う)ってことではないかと.

テンプレートにエレメント名の項目をずらっと書いておけば accept() 一発でいけるわけで,
汎用テンプレートを使えるようにするには SmartyDynamic のようなものが必要,と.
どうして SmartyDynamic がなくなって代わりが用意されなかったのかは謎ですが.
057355404/07/02 10:59ID:???
みなさんいろいろどーもです。

今form入力ページがたくさんある業務用サイトを作っていて、
数ページ程度ならエレメントをずらずらと並べるけど、なんだか
QuickFormの利点一つ(サンプルスクリプトを動かしてみたときの感動)が
スポイルされる気がするし、数十ページになるとループで回せるところは
テンプレート側で回したいので、現段階での結論は、汎用テンプレートを
用意しViewクラス内で素のQuickForm::toArray()で得た変数を元に
form部分をくみ上げて、メインのテンプレート内に押し込むことにします。

きっともっと便利な方法があるかもしれないけど、これだけ大きなクラスを
掌握する頭も時間もねぇー。

お付き合いありがとうございました。
0574nobodyさん04/07/02 11:16ID:???
> Viewクラス内で

|_・) 何かのフレームワークですか、、もじゃ?
0575nobodyさん04/07/02 11:29ID:???
お疲れさんです.
確かにそういう用途だと Dynamic レンダラじゃないとやってられんですね……

今の作業が終わって手が空いたら SmartyDynamic を新たに作ってしまうと後が楽かもです(w
ArraySmarty を継承して,toArray() をうまいこと自作すれば,意外に簡単にいけそうな気がする.
057655404/07/02 15:23ID:???
スマソ、覚書&質問。
addRuleに独自のものを追加するには、
QuickForm::registerRule()で独自ルールチェック関数を追加する。
最終的にはcall_user_func()を使っている。
addRuleの第4引数はcall_user_funcの第3引数に渡るので、
汎用的なルールチェック関数も書ける。

んだが、QuickForm::registerRule()はViewクラスにあって、
ルールチェック関数はDBに問い合わせる都合上Modelクラスにあって、
スタティックコールできないメソッドの場合、どうすればいい?

強引にViewクラス内から
$this->form->registerRule('isUsed_Check','callback','isUsed_Check',&$GLOBALS['model']);
として、Modelクラスのメソッドを呼び出すことは出来て、結果正しく動いてますが、
こんなWarningが出ます。
Warning: Call-time pass-by-reference has been deprecated - argument passed by value;
If you would like to pass it by reference, modify the declaration of [runtime function name]().
If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.
However, future versions may not support this any longer. in /usr/local/apache/htdocs/************* on line 34

とりあえず、.htaccessに php_flag allow_call_time_pass_reference On と書けば
Warningは出なくなりますけど、こんなんでいいのか?
0577nobodyさん04/07/02 15:39ID:???
やり方違うんで参考になるかどうか知らんけど
自分は QF を extends して CommonForm.class.php を作成し、registerRule はそこでやってる
■ このスレッドは過去ログ倉庫に格納されています