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

Pear

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ってどうよ。
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 はそこでやってる
0578nobodyさん04/07/02 15:45ID:???
>>576
ってゆーか、エラー内容だけ出されても、、
どこのフレームワーク使ってるの?

助言出来る/出来ないは別にして興味あるなぁ
0579nobodyさん04/07/02 16:06ID:???
>>576
PHP5 で pass by reference が標準になることを考えれば,
allow_call_time_pass_by_reference が true なのが邪道とは言いかねると思う,個人的には.

で,そのフレームワークの構造がわからないとなんともだけど,
DB_DataObject が DB クラスを singleton 的に保持するように,
$GLOBALS をうまく使ってやれば,static に呼んでも動作するチェックコードを書けるのではないかと.
058055404/07/02 16:17ID:???
>>577-579
レスどーもです。
どこかのフレームワークを使っているとかじゃないです。
独りでチマチマやってます。
独学なんでやり方そのものが怪しいのかもしれんが、
siteAを作る場合、それようのVIEWとMODELクラスを作りますが、
必要最低限のCommonViewとCommonModelはあって、それぞれextendsしてます。
QFは今回初めてだし、Form入力の無いページもあるので、
必要なときにだけ生成させようかと。siteA_View->Qfrom
なんで、siteA_View->Qfrom->registerRule() でルールチェック関数に
siteA_Model->isUsed_Checkを指定したいということです。

ご理解いただけましたでしょうか?

> DB_DataObject が DB クラスを singleton 的に保持するように,
> $GLOBALS をうまく使ってやれば,static に呼んでも動作するチェックコードを書けるのではないかと.

うげ、意味がわかんね。orz
0581nobodyさん04/07/02 16:54ID:???
>>580
あーなるほど.

とりあえず,
関数名のトコに 'isUsed_Check' でなく array( &$GLOBALS[ 'model' ], 'isUsed_Check' ) を指定すると,
正しくそのオブジェクトのメソッドを叩くようになるんではないでしょーか.
<?php
$this->form->registerRule('isUsed_Check','callback',array( &$GLOBALS[ 'model' ], 'isUsed_Check' ));
?>
みたいな.

でも QF の Rule はある意味でビジネスロジックだから Model に入るのは良いとして,
それなら Model が QF 全部を生成し,それへの参照を View が持つようにする方が良いのではないか,とか,
漠然と思いましたです.
058255404/07/02 17:35ID:???
>>581
あーそっかー。
QFのコードを追っかけながら書いてたから、バカ正直に第4引数を使うことしか頭になかった。
と、言い訳を言ってみたが、あったまかてーわな。
allow_call_time_pass_referenceをoffにしてもエラーが出なくなりました。どうもです。
QFをModelで生成するかどうかは、もう少し様子を見ます。Smartyとの連携もあるし。

あと1点気にしているんですが、そもそもあるメソッドから別クラスのメソッドを呼ぶのに
call_user_func(&$GLOBALS[ 'class_name' ], 'method_name' ); というように、
$GLOBALSを使うのって「あり」ですか? てか、これ以外の手法って知らないんですけど。

1.あり
2.別の正しい方法がある
3.別クラスのメソッドを直接呼び出すのがそもそも邪道。
4.スタティックコールできるように組む。
5.他

独学なんで、ナニが王道なのか気になる。
0583nobodyさん04/07/02 18:06ID:???
call_user_func との絡みは別として,
あるクラスのインスタンスを共有して使いたい時に $GLOBALS を使う例は PEAR にも多々あります.

例えば DB_DataObject は内部で DB クラスのインスタンスを使うんだけど,
$GLOBALS[ '_DB_DataObject_connection' ] みたいのに DB オブジェクトを入れておいて,
DB_DataObject クラスの各インスタンスから共通で使用したりしてます.

ただ,$GLOBALS の乱用はコードを超見にくくするので,
上記のように特殊かつ限定された利用法に留めるのがよろしいかと.
   
0584 ◆AngelH/kMI 04/07/03 02:02ID:???
>>583
話それるけど、ちょっと気になったので。
DB_DataObjectのインスタンスを共通で使うのは何故でしょ?

DB_DataObjectで使っているPEAR::DBのインスタンスはGLOBALSに保持して
中で共通の物使ってるからあまり意味ないような気が・・・。

(DB_DataObject::debugLevel(5)とすればわかるんだけど、
既に一回DataObject(からfactoryした場合も)を使った後は
既に生成済みのDBインスタンスを使ってます。
デバッグメッセージには「Cached Connection」とかそれっぽく出るはず)
0585nobodyさん04/07/03 04:10ID:???
>>584
DB_DataObject の複数のインスタンスがひとつの DB のインスタンスを共有する,
って意味のことを書きたかったんで……
おっしゃることと同じ意味のことを書きたかったんですが,文が変でしたかね.すんまそん orz

自作の DB_DataObject 拡張クラスで _connect() を override して ALTER SESSION したりしてるんで
その辺の動作は理解してるつもりですが,説明するための文にするのって難しいですね orz
058655404/07/03 09:17ID:???
>>583-585
なんどか読み直しているうちに>>579の意味(手法)がなんとなくわかってきた。
DB_DataObjectを細かく見ていないので、勘違いしているかもしれませんが。
>>582に対して反論はなさそうだけど、汎用性を考えれば>>582の4ってことかな。
いろいろどーもでした。m(_._)m
0587 ◆AngelH/kMI 04/07/03 09:57ID:???
>>585
ああ。
なるほど。

ちょっと意地悪な言い方でした・・・。
すみませんです(苦笑

>>586
多分、DataObjectのソース読んだ方が理解早いですよー。
058855404/07/03 10:20ID:???
あああ、、、
Rule/Callback.phpのvalidate()は、registerRuleの第4引数がある場合のみ
call_user_funcで呼び出していて、なければ直接呼び出しているようです。
だから、
$this->form->registerRule('isUsed_Check','callback',array( &$GLOBALS[ 'model' ], 'isUsed_Check' ));
だとFatal errorがでる。やっぱり、
$this->form->registerRule('isUsed_Check','callback','isUsed_Check',&$GLOBALS['model']);
こうかかないと、ダメみたいっす。
やっぱstaticで呼び出せるようにしないとあかんのか。
そう思いつつ、今回はこれで逃げる。
058955404/07/03 10:24ID:???
おっと。
>>587
多分そうでしょうねぇ。
急がば回れ、しかし解っていても回れない。
一気に詰め込むと頭がオーバーフローしそうだ。orz
059055404/07/03 16:03ID:???
何度もスマソ。
素のtoArray()は添字配列なんで、単純にループさせる場合はそれでいいが、
ループで済まされない場合は属性(name)を使った連想配列の方が、
やっぱ何かと都合がいい。
そんなわけで、エレメントだけ一つ掘った配列になるよう
Smartyレンダラ(ArraySmarty)を継承して作ってみました。
<?php
require_once 'HTML/QuickForm/Renderer/ArraySmarty.php';
class HTML_QuickFrom_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty{
    function _storeArray($elAry)
    {
        if ($elAry) {
        $sKeys = $elAry['keys'];
        unset($elAry['keys']);
        // where should we put this element...
        if (is_array($this->_currentGroup) && ('group' != $elAry['type'])) {
            $toEval = '$this->_currentGroup' . $sKeys . ' = $elAry;';
        } else {
            $toEval = '$this->_ary[\'elements\']' . $sKeys . ' = $elAry;';
        }
        eval($toEval);
        }
        return;
    }
}
?>
[\'elements\']を追加しただけですけどね。とりあえずこれで動いた。
059155404/07/03 16:11ID:???
そうそう、>>590はtoArray()を確認しただけで、
他のメソッドまでは確認してません。あしからず。
059255404/07/03 16:30ID:???
連投しているとウザがられそうだが...
typoしてました。
×class HTML_QuickFrom_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty
丸class HTML_QuickForm_Renderer_ArraySmarty2 extends HTML_QuickForm_Renderer_ArraySmarty

あと、やっぱりこれだけだと、getElement()等が使えません。orz
0593nobodyさん04/07/06 19:41ID:???
上の一連のHTML_QuickFormのレンダラの問題、
自分の使いやすいようにレンダラ修正すりゃいいっちゃいいんだろうけど、
正直これくらいはパッケージ側でクリアにして欲しいよなあ
せっかく凄くいいライブラリなのにここだけが微妙に融通利かないってのが歯痒い
作者さんにメールすれば考慮してくれるもんですかねぇ。。
059455404/07/06 19:50ID:???
うーんと、続報?
とりあえず、>>590のコードは使えます。(typoはおいといて)
レンダラ側ではtoArray()しか使ってないけど、QuickFrom側は
addGroup,addGroupRule,getElement,createElement等は問題なし。
よくよく考えれば、レンダラ側を弄っただけなんで、本体は関係ないのよね。
Group化が出来れば、自分が作っているフォームならほぼテンプレート側で
ループさせるだけで済みそうです。
0595nobodyさん04/07/06 22:18ID:???
各種レンダラの操作を統一する過程で Dynamic が消えたんじゃないかと予想してみる
0596nobodyさん04/07/07 10:50ID:LF3NmbpZ
QuickFormのRule検証でSubmitボタンを複数用意して、ボタンごとに動作を変えるっ
てことはできないんですかね?
極端な例では、ボタンAをクリックしたときにはvalidateするけど、ボタンBをク
リックした時にはvalidateしない。みたいなことです。
Documentを見てみたものの、そういった情報が見当たらなかったので。
何か情報があったらお願いします。
0597nobodyさん04/07/07 11:25ID:???
>>596
if (isset($_REQUEST('element_name ...
0598nobodyさん04/07/07 17:43ID:MesltrHS
>596
すみません。ちょっと言葉が足りませんでした。
client側でのRuleチェックをしようかと思っているんですが、
何がうまい方法はないかな、と考えているんです。
Ruleをカスタマイズしようか、と思ってのですがもしもQuickFormで
うまい方法があれば、と都合のよいことを考えています。
0599nobodyさん04/07/07 19:31ID:???
>>598
Ruleのclientで吐き出してくれるjavascriptコードに満足いかないなら
もう自分でjavascript書いちゃった方がいいんじゃないかな
HTML_QuickFormのclientチェックはあくまで付加的なものかと
0600nobodyさん04/07/08 11:54ID:???
JavaScript 切ってる人は今でもそれなりにいそうだし,
client side のチェックは,全く動かなくてもサイトとして完動するものじゃないと,ね.

で,submit ボタンにしないで,button オブジェクトに自前で onclick に JavaScript 指定し,
その中で,onSubmit を無効にしてから form.submit() するようにすれば,
期待の動作をするのではないだろーか.
0601nobodyさん04/07/10 08:38ID:???
PEARマニュアルの日本語訳に参加したいんですが
どうすればいいんですかね。
マニュアル読んでも何も書いていないし。
ご存じの方教えてください。
0602nobodyさん04/07/10 08:38ID:???
PEAR::Calendar無駄にでかすぎるような気がするんですが
モース腰シンプルな可憐d−あクラスないかな。
0603nobodyさん04/07/10 08:54ID:???
pearマニュアル文字化けする。
IE糞だな。
operaも糞だし。
糞だらけだ。
0604nobodyさん04/07/10 11:25ID:???
>>601
ひとまず php-doc ML に参加するよろし
0605nobodyさん04/07/10 11:27ID:???
>>601
先ずは[PHP-doc ML]に参加する。で、アーカイブで流れを見る。
# [PHP-doc 213]のツリー辺りからで良いと思う。
0606nobodyさん04/07/10 15:54ID:???
>>603
http://pc5.2ch.net/test/read.cgi/software/1086500384/855-857
0607nobodyさん04/07/10 18:44ID:???
>>601
PHP.net、php-doc-jp を漁って下さい。

実作業に関する情報は
http://elf.no-ip.org/wiki/?PHP%2Fphpdoc

作業内容を把握して出来そうだなと思ったら、
参加したい旨を php-doc-ja に投げれば誰かが面倒見てくれます。
0608nobodyさん04/07/12 19:02ID:???
なんでmojaviにはcookieをgetするメソッドはあるのに
setするのはないんだろう?
0609nobodyさん04/07/13 11:53ID:???
リストボックスとかラジオボタンの値の保持ってできんの?
0610nobodyさん04/07/16 13:35ID:???
mojaviわかりやすく解説したサイトある?
0611nobodyさん04/07/16 15:01ID:???
そんなもの無い。
フォーラム漁るかコード読むか。

8月末の神ムック発売まで待て。
061261104/07/16 15:34ID:???
フォーラムからたどれるけど
http://ad.hominem.org/log/2004/06/tutorial_on_mojavi.php
とかあるが、分かりやすいとは言えない罠。
0613nobodyさん04/07/19 03:08ID:???
PECLのSQLiteが1.0.3でSQLite2.8.14になりますた。
でも pear upgrade SQLite-1.0.3.tgz だと
sqlite.so の移動に失敗するんでtarballを解凍して
手動でmake installしないといけませんでした。(なぜかこの場合はOK.)
PHPのバージョンは4.3.8, OSはMacOS X 10.3.4 と FreeBSD 5.2.1-p9
0614nobodyさん04/07/19 08:17ID:???
>>613
確かに、pear upgrade SQLite では、置き換えに失敗して、sqlite.so が消えていた。
こちらは Linux だったけど。

結局、アンインストールしてからインストールした。

pear uninstall SQLite
pear install SQLite
0615nobodyさん04/07/22 09:56ID:???
最近、Mojavi のソース読み始めたんだけど、
Mojavi って、
module/***/action/***
っていう形でアクセスするから、どうもURLが長くなりがちだよね?
パラメータを渡そうとするとさらに長くなるし、これは、module action の部分を
短くするとかしか、短くする手段ってないのかな?

今まで、
***.php?para=***
みたいなカンジだったから、一気にURLが長くなるので気になってしまって..
0616nobodyさん04/07/22 10:15ID:???
>>615
二通りの対処ができます。

* module, action の部分を変更する。
config.php の MODULE_ACCESSOR, ACTION_ACCESSOR を変更して下さい。

* ページコントローラとして Mojavi を使う。
ディレクトリ毎にコントローラ index.php を置いて、モジュールとアクションを固定しておく。
$controller->dispatch('TargetModule', 'TargetAction');
0617nobodyさん04/07/22 10:40ID:???
なるほど、そっか。
dispatch に直接モジュールとアクションを渡せばURLで渡す必要はないのね。

ってことは、別名のファイルでモジュールとアクションを固定してしまえば、
前みたいに、
***.php?para=***
ってこともできますね。感謝!
0618nobodyさん04/07/22 15:57ID:???
>>615-617
mod_rewriteでいいんじゃない?

0619nobodyさん04/07/31 23:59ID:???
Mojaviの神ムックが待ち遠しい・・。

ところで本の名前とかはまだ分からないんでしたっけ?
0620nobodyさん04/08/01 02:08ID:???
一冊まるごとmojaviとかpearライブラリを使ったムックが出るのかと思ってたが、
少し記事が載るってだけなんだよね?楽しみな事に違いはないが。
■ このスレッドは過去ログ倉庫に格納されています