Pear
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
NGNG0588554
04/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で呼び出せるようにしないとあかんのか。
そう思いつつ、今回はこれで逃げる。
0590554
04/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\']を追加しただけですけどね。とりあえずこれで動いた。
0592554
04/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:???自分の使いやすいようにレンダラ修正すりゃいいっちゃいいんだろうけど、
正直これくらいはパッケージ側でクリアにして欲しいよなあ
せっかく凄くいいライブラリなのにここだけが微妙に融通利かないってのが歯痒い
作者さんにメールすれば考慮してくれるもんですかねぇ。。
0594554
04/07/06 19:50ID:???とりあえず、>>590のコードは使えます。(typoはおいといて)
レンダラ側ではtoArray()しか使ってないけど、QuickFrom側は
addGroup,addGroupRule,getElement,createElement等は問題なし。
よくよく考えれば、レンダラ側を弄っただけなんで、本体は関係ないのよね。
Group化が出来れば、自分が作っているフォームならほぼテンプレート側で
ループさせるだけで済みそうです。
0595nobodyさん
04/07/06 22:18ID:???0596nobodyさん
04/07/07 10:50ID:LF3NmbpZてことはできないんですかね?
極端な例では、ボタンAをクリックしたときにはvalidateするけど、ボタンBをク
リックした時にはvalidateしない。みたいなことです。
Documentを見てみたものの、そういった情報が見当たらなかったので。
何か情報があったらお願いします。
0598nobodyさん
04/07/07 17:43ID:MesltrHSすみません。ちょっと言葉が足りませんでした。
client側でのRuleチェックをしようかと思っているんですが、
何がうまい方法はないかな、と考えているんです。
Ruleをカスタマイズしようか、と思ってのですがもしもQuickFormで
うまい方法があれば、と都合のよいことを考えています。
0599nobodyさん
04/07/07 19:31ID:???Ruleのclientで吐き出してくれるjavascriptコードに満足いかないなら
もう自分でjavascript書いちゃった方がいいんじゃないかな
HTML_QuickFormのclientチェックはあくまで付加的なものかと
0600nobodyさん
04/07/08 11:54ID:???client side のチェックは,全く動かなくてもサイトとして完動するものじゃないと,ね.
で,submit ボタンにしないで,button オブジェクトに自前で onclick に JavaScript 指定し,
その中で,onSubmit を無効にしてから form.submit() するようにすれば,
期待の動作をするのではないだろーか.
0601nobodyさん
04/07/10 08:38ID:???どうすればいいんですかね。
マニュアル読んでも何も書いていないし。
ご存じの方教えてください。
0602nobodyさん
04/07/10 08:38ID:???モース腰シンプルな可憐d−あクラスないかな。
0603nobodyさん
04/07/10 08:54ID:???IE糞だな。
operaも糞だし。
糞だらけだ。
0605nobodyさん
04/07/10 11:27ID:???先ずは[PHP-doc ML]に参加する。で、アーカイブで流れを見る。
# [PHP-doc 213]のツリー辺りからで良いと思う。
0606nobodyさん
04/07/10 15:54ID:???http://pc5.2ch.net/test/read.cgi/software/1086500384/855-857
0607nobodyさん
04/07/10 18:44ID:???PHP.net、php-doc-jp を漁って下さい。
実作業に関する情報は
http://elf.no-ip.org/wiki/?PHP%2Fphpdoc
作業内容を把握して出来そうだなと思ったら、
参加したい旨を php-doc-ja に投げれば誰かが面倒見てくれます。
0608nobodyさん
04/07/12 19:02ID:???setするのはないんだろう?
0609nobodyさん
04/07/13 11:53ID:???0610nobodyさん
04/07/16 13:35ID:???0611nobodyさん
04/07/16 15:01ID:???フォーラム漁るかコード読むか。
8月末の神ムック発売まで待て。
0612611
04/07/16 15:34ID:???http://ad.hominem.org/log/2004/06/tutorial_on_mojavi.php
とかあるが、分かりやすいとは言えない罠。
0613nobodyさん
04/07/19 03:08ID:???でも 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:???確かに、pear upgrade SQLite では、置き換えに失敗して、sqlite.so が消えていた。
こちらは Linux だったけど。
結局、アンインストールしてからインストールした。
pear uninstall SQLite
pear install SQLite
0615nobodyさん
04/07/22 09:56ID:???Mojavi って、
module/***/action/***
っていう形でアクセスするから、どうもURLが長くなりがちだよね?
パラメータを渡そうとするとさらに長くなるし、これは、module action の部分を
短くするとかしか、短くする手段ってないのかな?
今まで、
***.php?para=***
みたいなカンジだったから、一気にURLが長くなるので気になってしまって..
0616nobodyさん
04/07/22 10:15ID:???二通りの対処ができます。
* 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=***
ってこともできますね。感謝!
0619nobodyさん
04/07/31 23:59ID:???ところで本の名前とかはまだ分からないんでしたっけ?
0620nobodyさん
04/08/01 02:08ID:???少し記事が載るってだけなんだよね?楽しみな事に違いはないが。
0621nobodyさん
04/08/01 05:11ID:???0622nobodyさん
04/08/01 23:45ID:???Mojaviの記事を書いた者です。
現在のところ、ムックの発売日や名前に関して、少なくとも私は存じており
ません。このことについては、明日確認を取ってみます。
0623nobodyさん
04/08/01 23:49ID:???0624nobodyさん
04/08/01 23:53ID:???0625nobodyさん
04/08/02 00:43ID:???0626622
04/08/02 18:01ID:???とりあえずムックは出版されるということしか、現在はわかりませんが。。。
続報が報告可能でしたら、後日。
0628622
04/08/02 18:20ID:???下記を参照下さい。
http://ns1.php.gr.jp/pipermail/php-users/2004-May/022134.html
0629627
04/08/02 23:55ID:???ありがとうございます。
てっきり私はWEB+DB PRESSあたりなのかなと思っていたんですが,
PHP専門のムックが発売されるんですね。
楽しみにしてます。
0630nobodyさん
04/08/04 18:23ID:99atDA1b$id = $table->insert();
で、sequenceの値がとってこれるとマニュアルにあるみたいですが、うまくいきません。
ini に
sequence_usr = id
ってして createTables.php してもダメです。
ためしに DataObject_Usr クラスに sequenceKey(){return array('id',true,false)} を追加したんですが、
やっぱりうまくいかないです。
なんででしょうか・・・
0631nobodyさん
04/08/04 18:44ID:???どこでつか
0632nobodyさん
04/08/04 18:52ID:???とりあえず debugLevel 5 に設定して
DB とどんなやり取りをしてるのかみてみるのがいいかも。
あと sequenceKey() を設定しても、keys() で帰ってくるのが偽だった時
array(false, false, false) を返すみたいなので、念のため
keys() { return array('id') } もあわせてどうぞ。
ついでにいうと、DB は何なのか?ってのも。
0633nobodyさん
04/08/04 20:01ID:???http://pear.php.net/manual/ja/package.database.db-dataobject.db-dataobject.insert.php
Insert the data into the database, based on the variable values of the current object
and returns the ID of the inserted element if sequences or primary keys are being used.
このあたりだね。
オイラも>>630と同じ状況になったけど、その時は諦めて追っかけてないや。
0634nobodyさん
04/08/07 13:01ID:???0635nobodyさん
04/08/07 13:14ID:???0636nobodyさん
04/08/07 13:43ID:???使っている方どれくらいいらっしゃるのでしょう?
0637nobodyさん
04/08/07 13:49ID:???ノシ
0.9.2から大きな変更はなさそうなのですんなりアップグレードできそう。
DB_DataObject 1.7.0も出ましたがChangeLogの
* Result Field names now stored seperately from Result Object
がちょっと気になるのでこっちはコードを見てからアップグレードする予定。
0638nobodyさん
04/08/07 14:40ID:???ここまで長かったっすねぇ。
Flexy 使ってます。
でも HTML の文法構造が破綻していると出力がもっと壊れるので HTML の品質が確保出来ないと使いづらいのが (/_;)
0640nobodyさん
04/08/08 11:44ID:???0642nobodyさん
04/08/13 21:48ID:???dsnにホストの名を設定するとエラーになるけど
ホスト名設定しないとつながる。
わけわかんねえな〜。
0643nobodyさん
04/08/13 23:06ID:???Oracleは使ってないんだけど、
ホスト名を書くとTCP/IPで接続、書かないとUNIXドメインソケットで接続するから、
Oracle側の設定でTCP/IPによる接続を許可していないんじゃないかな?
外してたらスマソ
0644nobodyさん
04/08/13 23:47ID:???それは Pear のどのパッケージの話?
もしかして Pear じゃなく oci8 関数の話をしているならスレ違いだが,
その「ホストの名」ってのが tnsnames.ora にサービス名として
きちんと登録されているか確認してみると良い.
0645nobodyさん
04/08/14 00:22ID:???>>644
Oracle9iが入ってるサーバー(RedHat8)と
Oracle8iが入ってるサーバー(WindowsXP)があるのね。
tnsnames.oraに2つともサービス登録してあって、
両方ともSQLPlusでつながるし、PHPのOciLogonでもつながるんだよ。
パッケージはデータベースでいいんじゃないの?
ちなみにPHPとOracle9iは同じサーバー(RedHat8)に入っているよ。
返事遅れてごめんなさい。
既に告知でてますが、24日発売のW+DにPHPの特集記事があります。
内容はやや初心者よりかな。
立ち読みして買っても損しないと思ったら買ってください(笑
0647nobodyさん
04/08/20 15:19ID:???http://oopp.dyndns.org/technote/dbdo_manual.html
http://oopp.dyndns.org/technote/dbdo_basic.html
ここにあったDB_DataObjectのドキュメントを保存しているかたいませんか?
かなり重宝していたのですが、最近つながらなくなってしまって..
OOPP Memorandaってサイトの1コンテンツだったと思います。
0648nobodyさん
04/08/24 09:31ID:???http://ns1.php.gr.jp/pipermail/php-users/2004-August/023573.html
0649nobodyさん
04/08/24 12:23ID:???0650こやま
04/08/24 18:01ID:???鈴木さんはなかなかこういうのを仕掛ける人ではないので、
タイミングとしてはいい質問だったんでないかな。
0651nobodyさん
04/08/24 18:06ID:???0652649
04/08/24 18:46ID:???最初に PHP-users に流れた時には色々あったので。
0653nobodyさん
04/08/30 15:19ID:s3JBvD0Slinks.ini には
[tb2]
tb2_id = tb1:id
んで、
$do1 = DB_DataObject::factory('tb1');
$do2 = DB_DataObject::factory('tb2');
$do2->no = 1;
$do1->joinAdd($do2,"LEFT");
なとき、
SELECT * FROM tb1 LEFT JOIN tb2 AS tb2 ON tb1.id=tb2.id
とかなるんだが、俺としては
SELECT * FROM tb1 LEFT JOIN tb2 AS tb2 ON tb1.id=tb2.id AND tb2.no=1
になってほしいんだが。
どうすればいいとおもう?
0654nobodyさん
04/08/30 15:20ID:???[tb2]
id = tb1:id
だ
0655nobodyさん
04/08/30 18:45ID:???>>653
$do2->whereAdd('no=1'); とか $do1->whereAdd('tb2.no=1'); とかではだめ?
自分はDB_DataObjectのJOIN嫌いなのでテーブル結合はビュー使って
ビューに対してDB_DataObjectのインスタンスを作ってます。
だから↑で書いたのは間違ってるかも。
0656nobodyさん
04/08/30 18:56ID:???[table1]
id = table2:table1_id
$table1 = new Example_DataObject_Table1();
$table2 = new Example_DataObject_Table2();
$table2->example_field = 5;
$table1->selectAs();
$table1->joinAdd($table2);
$table1->whereAdd('table1.id = ' . $hoge);
$table1->find();
SELECT 〜 FROM example INNER JOIN table1 AS table2 ON table1.id=table2.table1_id WHERE table2.example_field = 5 AND table1.id = xxx
な具合に動いています。
0657nobodyさん
04/08/30 21:50ID:???復活したね。
ついでにこれで中の人も分かったので、これだけのドキュメントが行方知らずって勿体ない事態もこの先回避出来るぽい。
0658nobodyさん
04/08/31 00:19ID:???性交童貞もとい、西高東低な気がする。
0659nobodyさん
04/09/01 06:56ID:Mk6yOqMsPEARを使いたくてインストール方法を調べてたんですが
c:\php\go-pear.bat
なんてものはないんですが・・・
環境
WindowsXP
PHP4.3.2
0662nobodyさん
04/09/01 09:08ID:???go-pear.batはcli版のphpで、PEARフォルダのgo-pear.phpを実行
しているだけなんだけど、php内のPEARフォルダに go-pear.php
ファイルはある?
0663660
04/09/01 09:21ID:???> みなさんはどこら辺を使ってるんですかね?
私は常に最新版を使っているけど、PHP日本ユーザ会のページに各バージョンの
Release Announcement と ChangeLog(それぞれ和訳あり)、Bug情報が載っている
から、読んで判断されたし。
ttp://www.php.gr.jp/
0664nobodyさん
04/09/01 09:43ID:???それがないんすよ
ぐぐってやり方調べてもそこから始まってて、どうにもならなくてここにきたわけなんですが
cli版のPHPってのも初めて聞きました
>>663
参考にします
0665660
04/09/01 10:06ID:???php-4.3.2-Win32.zipの中にはgo-pear.batが入ってるよ(確認した)。
本家のページからWindows binary(not Windows installer版)を再入手してはいかが?
0666nobodyさん
04/09/01 18:36ID:???そのサーバは攻撃されたらあぼーんですね。
0667nobodyさん
04/09/01 19:10ID:???0669653
04/09/02 17:40ID:???>>655,656
の通りでうまくいった。ありがとう。
で、質問ばっかりで申し訳ないんだが
CROSS JOIN する場合はどうすりゃいいんだ?
$table1->joinAdd($table2,"CROSS");
ってのはないみたいだし、
INNER JOIN table2 ON TRUE
ってすればいいかなぁとおもったんだが
$table2->whereAdd('true');
$table1->joinAdd($table2,"INNER");
とかしてもJOINされてないんだよね。
links.iniにON条件を書いてないとjoinAddできないのかな・・・
0671nobodyさん
04/09/03 07:42ID:???未選択状態を調べるにはどうすればいいのでしょうか?
addRuleでrequiredを追加してみたんですが、エラーが発生しないようなんです。
未選択状態だと、以後のチェックも行われないみたいだし。
デフォルトでどれかを選択状態にしておけばいいのですが、
利用者が選択を忘れてデフォのままsubmitしてしまうのを
避ける為、デフォルトは設定せずにしておきたいのですが。。。
$form->addElement('radio','radio_select',NULL,NULL,'A');
$form->addElement('radio','radio_select',NULL,NULL,'B');
$form->addElement('radio','radio_select',NULL,NULL,'C');
$form->addRule('radio_select','選択してください','required');
$form->addRule('radio_select','選択値が異常です','regex','/[A-C]/');
としていますが、どこかおかしいですか?
0672nobodyさん
04/09/03 09:04ID:???うちの HQF 3.2.3 では期待通りに動くっす.
他の element もまじえて $form->validate() した後の $form を Var_Dump::display() したりすると,
何か掴めるかもしれないね.
ただ,'radio' は group の中に入れないと「選択してください」が複数出てきて見た目がちょっと変.
0673671
04/09/03 10:59ID:???さんくす。
デバッグコンソール見て判った。配列を一つ掘っているのね。
どれかを選択すれば全てのエラーは消えるみたいだから、
一つ目のエラーを確認して1行だけ出力します。
あぁ、すっきりしますた。
0674nobodyさん
04/09/03 13:29ID:???$examples = array();
array_push($examples,
HTML_QuickForm::createElement('radio', null, null,
'ラベルA', '値A',
array('id' => 'example1'))
);
array_push($examples,
HTML_QuickForm::createElement('radio', null, null,
'ラベルB', '値B',
array('id' => 'example2'))
);
$form->addGroup($examples, 'example', 'Radio Example', " \n");
$form->addRule('example', 'Message for the Required Element',
'required', null, 'client'
);
0675nobodyさん
04/09/03 17:31ID:lg7eGDsn0676nobodyさん
04/09/03 17:55ID:CNeebmafttp://ns1.php.gr.jp/pipermail/php-users/2004-August/023593.html
0677nobodyさん
04/09/03 19:21ID:???とりあえずレンダラとしてSmartyの代わりにFlexyを使うようにしたり
PgSQLSessionHandlerを改造してMDBSessionHandlerを作ってみたり。
肝心のアプリはまだまだできてませんが、面白いですね。
ムックを首を長くして待ってます。
あとAuth_Container_MDBやCache_Container_mdb, MDB_QueryTool_Queryとかで
MDB::connect($dsn)をMDB::singletonに書き換えるとちょっとだけ幸せになれる気がしますた。
0678nobodyさん
04/09/06 08:31ID:h3KSdOjPようするにお前もわかんないだな
0681nobodyさん
04/09/14 00:59:51ID:pZNPN1gg確か、ここに作者さん居なかったかな?
お元気ですかー。
0682nobodyさん
04/09/14 10:02:01ID:???お待たせして申し訳ないです。いたって元気にしております。
近々HTTP-MobileAgent 0.22相当をリリース予定です。
最新のDoCoMoディスプレイマップをご希望の場合は、Perlモジュール
HTTP-MobileAgentに付属のmakexmldocomomapスクリプトを使ってXMLファイル
を定期的にアップデートする方法をお勧めします。
0683681
04/09/14 13:30:11ID:???あ、呼び出しちゃって申し訳ないです。
お疲れ様です。有難く使わせてもらってます。
makexmldocomomapで、xml吐き出したんですけど、
これを元に、DoCoMoDisplayMap.phpを書き直す(足す)んですか?
それともphpで参照できるようになってるんでしょうか?
あと、まだ先なのですが、Vodafone新端末でAgentが、
J-PHONE → Vodafoneとかに変わるのがちょっと気になってます。
0684682
04/09/14 13:39:13ID:???はい、PHPからそのまま(HTTP-MobileAgentと共通で)使えます。
具体的には、環境変数DOCOMO_MAPにXMLファイルのパスを記述するだけです。
PHPスクリプトで書くなら、
$_SERVER['DOCOMO_MAP'] = '/path/to/DoCoMoMap.xml';
Apacheの設定ファイルに書くなら(mod_envモジュール)、
SetEnv DOCOMO_MAP "/path/to/DoCoMoMap.xml"
とします。
0686nobodyさん
04/09/27 00:45:33ID:???0.20.0up
いつも使わせてもらってます。
作者さん乙。
0687682
04/09/27 11:43:26ID:???ありがとうございます。遅くなって申し訳ない。
安定しているので年内にはエンドユーザドキュメントを書いてstableリリース
(1.0.0)にしようと考えています。
要望等ありましたら遠慮なくここに書いて下さいね。検討させて頂きます。
というか開発手伝ってもらうのも歓迎ですが。
■ このスレッドは過去ログ倉庫に格納されています