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

Pear

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
ってどうよ。
079378405/01/17 17:43:05ID:???
上の訂正
_submittedValues -> _submitValues
0794nobodyさん05/01/25 06:51:55ID:???
普通のmail 関数と
pearの mail 関数どう違うんでしょうか。

普通のmail 関数で十分な気がする。
0795nobodyさん05/01/25 07:08:08ID:???
>>794
驚かないで聞いてくれ。
pearは実はPHPで書かれている。
0796nobodyさん05/01/25 12:58:07ID:???
な、なんだってー!!!(AAry
0797nobodyさん05/01/25 17:32:46ID:???
pear mailいみねーじゃん!
0798nobodyさん05/01/26 01:08:25ID:???
PEAR の Mail は,バックエンドを「フツーの mail() 」とか「自分で SMTP 喋る」とか
いろいろ選択できる(自作もできると思う)から,
まぁ無意味ってわけじゃないが,普通には使わないな……
0799nobodyさん05/01/26 02:37:05ID:???
UNIX系の場合、mail()はsendmailコマンドに丸投げで、
WindowsはSMTPを一応喋っている形になっている。

で、UNIX系でも直接ISPやレンタルのSMTP鯖へ投げたい場合は
Pear Mailを使うのが楽かもね。
ローカルのMTA設定を弄れば同じことも出来るけど、
出来ないorやりたくない人も居るだろうし。
0800nobodyさん05/01/26 03:24:59ID:???
俺はPHPMailerクラス使ってる。
別にPEARのmailクラスに不満がある訳でもないが。
0801さちこ05/01/26 15:00:33ID:???
HTML_QuickFormでのselectedの利用方法が
わかりません。
ご教授お願いいたします。
<私のソース>
・
・
・
$status_list = array(1=>"option1",
2>"option2",
3=>"option3");

$attrs = "";

$form->addElement('select', 'status', 'Select status:', $status_list, $attrs);
・
・
・
0802nobodyさん05/01/26 16:42:49ID:???
setValue
0803nobodyさん05/01/26 16:50:47ID:???
>>801
>>408-
080480205/01/26 17:00:23ID:???
うぇ、素で間違えたorz
つか、英語わからんでもマニュアル眺めてりゃなんとなくわかるよ。
http://pear.php.net/manual/en/package.html.html-quickform.php
0805nobodyさん05/01/26 17:23:35ID:???
>>802
合ってるような気もするが。

$status =& $form->addElement('select', 'status', 'Select status:', $status_list, $attrs);
$status->setSelected(2);
0806さちこ05/01/26 17:30:31ID:???
>804、805
ありがとうございます。おかげで理解することができました!!!
0807nobodyさん05/01/26 17:32:40ID:???
分かりません、出来ませんの波がとうとう PEAR にまで。
普及した証左だと喜ぶべきか、これでまたいずれPEAR系情報源も初心者とノイズで埋まるのかと鬱るべきか。

http://pear.php.net/manual/en/package.html.html-quickform.tutorial.php
> Example 32-1. Basic QuickForm usage
0808nobodyさん05/01/27 19:12:47ID:???
一般向け情報源が初心者とノイズで埋まるくらいでないとマトモな普及なんてありえない


ということにして自分を納得させようぜ orz
0809nobodyさん05/01/27 19:49:29ID:???
オイラも一ヶ月ほど前にHTML_QuickFormを使い始めたんだけど、
手取り足取りなチュートリアルは、
ttp://www.planewave.org/translations/quickform/html_quickform.html
ttp://www.is.titech.ac.jp/~yanagis0/kei/quickform.html
ttp://hatotech.org/kumatch/datas/quickform.pdf
くらいしか見つからなかった。
英語の良さげなチュートリアルみたいなのもあったけどURL忘れた。
ttp://www.sitepoint.com/subcat/php-tutorials の中のどれかだったと思う。
あとは pear添付のdocsくらいか。
0810nobodyさん05/02/02 17:48:32ID:???
■(M)DB_QueryToolで、どんなSQLを出力しているか調べる方法はありますでしょうか。
Firebirdを利用していて日付型のINSERTがしたいのですが
SQLでは
INSERT INTO table (ID, "DATE") VALUES (1, '2005/02/02');
(項目名DATEは予約語なので"でくくる必要があります)
でいけるのですがphpで
$d = array("ID"=>"1", '"DATE"'=>"'2005/02/02'");
$QueryTool->add($d);
としても登録されない状態で困っています。print_r($d)で
$d["DATE"]に'2005/02/02'が入っているのは確認したのですが…
■また、(M)DB_QueryToolのエラーはどのように取得すればいいのでしょうか。
どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。
0811nobodyさん05/02/02 19:01:24ID:???
>>810
ソース見た感じだと、
$QueryTools->setOption('logFile','sql_log.txt'); てな感じにセットしておけば、
sql_log.txtファイルに実行したSQLが保持されるみたい。要Logパッケージ。
エラーした場合も(failed)付きで書き出される模様。
$QueryTools->setOption('verbose',true); しておけば更に詳細に出るっぽい。
081281005/02/03 10:35:38ID:???
>>811
ありがとうございました。試したところばっちりでした。
ただ、Firebird固有なのかもしれませんが、
$d = array("ID"=>"1", "DATE"=>"2005/02/02"); は
INSET INTO table (ID, DATE) VALUES ('1', '2005/02/02'); となり
項目名DATEが予約語のため不可。
$d = array("ID"=>"1", '"DATE"'=>"2005/02/02"); は
INSET INTO table (ID) VALUES ('1'); となり
DATEが無視されてしまう("でくくっても'でくくっても\"でくくっても)ようで
困っています。情報ないでしょうか。
■エラーの取得方法をどなたかご存知ないでしょうか。
よろしくお願いいたします。
0813nobodyさん05/02/04 12:54:10ID:???
>>811
おお、ほんまや。
logfileなんていうオプションがあるの知らんかった。

これは便利ですなぁ。
0814nobodyさん05/02/04 13:50:14ID:???
>>811,813
ん?昨年秋に使った頃にはオプションだけあって未実装だったけど。実装されたのかな。
0.10.1 -> 0.11.1 の ChangeLog 見てみたけどロギングについては書いてないので尋ねてみるテスト。

>>812
Java じゃないんだし。返値取って var_dump すれ。
もしくは PHP4 ならまるごと PHP のエラー制御見れ。
081581005/02/04 15:24:22ID:???
>>814
実装されてるみたい。ただ呼び出すファイルと同じ場所に書き出されるので
パーミッション的に嫌な感じ。デバッグ用と割り切ればいいんでしょうけど。
あと、まるごとPHPみて勉強します。ありがとうございました。
0816nobodyさん05/02/04 16:04:05ID:???
>>815
うぁ 乱暴に投げたのに丁寧に返されてしまった… ありがとうございます。

API ドキュメント見るとメソッドの戻り値が載っているのでそれを参考にエラーハンドリング、
PEAR によるエラーハンドリングの詳細はまるごとに載ってるって感じで。
デバッグで var_dump 取る場合は Xdebug か PEAR::Var_dump 突っ込んでおくと幸せかも。
0817nobodyさん05/02/04 16:43:39ID:???
DB_QueryToolのドキュメントサイトが死んでるね。
0818nobodyさん05/02/04 16:56:06ID:???
だね。まぁ大したことは載ってなかった… かな?
同梱のサンプルコードしか記憶に残ってない。
0819nobodyさん05/02/07 21:00:38ID:???
peardocの日本語chm版ってどうやって作るの?PHPDoc使うの?
php_manual_jaなら解説サイトがあるんだがpeardocの方の資料少なすぎ・・・
0820nobodyさん05/02/10 23:09:00ID:???
PDO 0.2が出てるけど、使った人いたら感想を聞かせてください。
当方MacOS Xなのですがコンパイルは通るものの
pdo_hoge.soを読み込むと
dyld: php5 Undefined symbols:
_php_pdo_register_driver
とエラーが出てPHPが起動しませぬ。(pdo.soはちゃんとロードできてる)
0821nobodyさん05/03/18 19:42:14ID:OjH/9tRg
HTML_QuickFormでフォームを生成し、エラーがでたら
テキストエリアの背景色を赤系の色に替えて表示したいんですがなんかいい方法ないですかねぇ??
0822nobodyさん05/03/18 22:19:05ID:iQcV2TeE
エラーが出たら、そのtextareaのエレメントオブジェクトをもってきて
属性を適当に書き換えればいいんじゃないの。

いい方法っていうかそのまんまだが、、なにかできない理由でもあるのか?
0823nobodyさん05/03/19 07:06:32ID:kwTpFIt8
PEAR::DBつかってMySQLにつなげているんですが
fetchrow() し続けた後に、カーソルを先頭に戻すにはどうすればいいんですか?

PHPは4.2.x系です
0824nobodyさん05/03/19 09:07:41ID:???
>>823
fetchRow($res,0);
じゃぁダメなんかな?
0825nobodyさん05/03/19 18:16:00ID:???
>>821
Renderer に何を使ってるかによる
エラーの時は HTML の class 指定を変更するように書けばいいんじゃないかな
0826nobodyさん2005/03/24(木) 06:05:31ID:???
smartyなら、<sapn class="error">error message</span>みたいな
プラグインつくるとか。
{$form.name.error|class_error}みたいな感じで。
0827nobodyさん2005/03/24(木) 10:45:44ID:???
Smarty使ってます
0828nobodyさん2005/03/24(木) 19:22:19ID:E7t61Xr3
SpreadSheet_Excel_Writerではき出したものに、
グラフや計算式をいれたいのですが、
SpreadSheet_Excel_Writerから、
VBA書くことって出来ないですかね?
0829nobodyさん2005/03/31(木) 14:49:05ID:z8YDul0W
HTML_QuickForm使ってるんだけど、radioボタンで困っています。
<input name="hoge" type="radio" value="uki">
<input name="hoge" type="radio" value="foo">
<input name="hoge" type="radio" value="bar">

っていうのを作って、Smartyにレンダリングさせてるんだけど、
valueに日本語を入れたいと思うと、Smarty側で
{$form.hoge.日本語.html}
って値が割り振られてしまって、Smarty Errorになるんです。
createElement('radio'
する時点でvalueの指定するところと、nameの指定しているところが同じになってるのが
原因なんですが、これ回避できないんですかね?

なんで、いまは最終的に必要な時は変換を掛けております。
0830nobodyさん皇紀2665/04/01(金) 03:49:50ID:???
同じじゃない、、
createElement( 'radio', $name, null, $label, $value, $attr );
0831829皇紀2665/04/01(金) 10:35:03ID:JGI8hVrJ
>>830
あー、すみません。Smartyにレンダリングされる時のが同じと言う意味です。

$var[] =& createElement( "radio" , "name_dummy" , NULL , "label" , "value_dummy" , array('class'=>"dummy_class") ;
$form->addGroup($var , "$var" ) ;

とすると、このエレメントをSmartyでは
{$form.var.name_dummy.value_dummy.name} を var[name_dummy]
{$form.var.name_dummy.value_dummy.value} を value_dummy
と割り振ってしまいます。
デバッキングコンソールでは
name_dummy => Array (1)
バリュー => Array (8)
name => var[name_dummy]
value => バリュー
type => radio
frozen =>
required =>
error => empty
label => empty
html => <input class="" name="var[name_dummy]...
となっています。

この状態でvalue_dummyに日本語を入れると、{$form.var.name_dummy.value_dummy.value}の変数が上手く展開できないようでSmarty Errorになってしまいます。

0832nobodyさん皇紀2665/04/01(金) 11:50:46ID:???
Smarty の Renderer を継承した別のクラスを作って対応するのが
もっとも手っ取り早い workaround ではないかしら.

別のレイヤの回答をすると,value に日本語を入れるのはお勧めしない.
UA がどんなエンコーディングで入れてくるか判ったものではないから.
08338292005/04/02(土) 12:11:32ID:???
>>832
HTML_QuickForm_Renderer_ArraySmarty::_elementToArrayは
radioの時だけ、特別な処理してますねー。

これ、pearにリクエストした方がいいような気もします。

0834nobodyさん2005/04/02(土) 14:40:21ID:???
stripのバグって直す気ないのかしらん?
0835nobodyさん2005/04/04(月) 11:33:03ID:???
今月末発売のWEB+DB pressはPEAR::DB特集だそうだ。
0836nobodyさん2005/04/04(月) 11:41:07ID:???
>>834
報告されてるやつ?
0837nobodyさん2005/04/04(月) 17:32:46ID:???
MDB2とかPDOな昨今で敢えてPEAR::DBか
期待すべきなのか今更なのか……誰か突撃してくれw
0838nobodyさん2005/04/06(水) 23:10:01ID:???
>>836
そう。
セキュリティホール埋めてくれるのはありがたいけど、このバグを
直してもらわんとアップデートできんちゅうねん!!
0839nobodyさん2005/04/17(日) 17:14:33ID:???
http://pear.sakura.vg/
SPAM食らってるぞ。大丈夫か?つーかFrontPageは凍結しとけ
0840nobodyさん2005/04/20(水) 20:33:55ID:???
PEAR::DBってSQLiteは使えないって本当?
0841nobodyさん2005/04/20(水) 20:39:30ID:???
どこで聞いたの?
0842nobodyさん2005/04/20(水) 21:18:12ID:???
>>841
まるごとPHP!というムックに書いてあったんだけどガセか!
0843nobodyさん2005/04/20(水) 22:23:40ID:???
手元にその本があったので眺めてみたけど、それっぽい記述は見つけ出せなかった。。
その本の発行が2004/10発行で、
pear::dbのchangelog( ttp://pear.php.net/package/DB/download/All )と比較してみると、
発行時には既にtest的な実装の段階は終わってるようだね。
まぁ、本家を見にいくのが一番かと。半年くらい前の情報だと当てにもならなくなってるし。
0844nobodyさん2005/04/20(水) 22:51:30ID:???
pearのデータベースクラスは色々あるけど、最近はどれが評判いいですか?
現在はpear::DBでMySQLに接続しています。
データベースのパフォーマンスチューニングが終わったので、
こんどはPHP側をいじろうと思っています。
優先順位は、1.速度>2.ドキュメントの充実(英語で可)
>3.他のデータベースとの互換性です。
0845nobodyさん2005/04/20(水) 23:18:05ID:???
PEAR::DB_DataObject のところにあるな。
これはDB_DataObjectでSQLiteは使えないってことじゃないの。
0846nobodyさん2005/04/21(木) 09:12:51ID:???
当時の事情じゃねぇの?PHP5/SQLite がまだ新しいものの部類だったし。
DBDO が SQLite 無視してそのまま突っ走るとは思えない。
今は事情も変わってますよ、という話は大いにあり得るが。

著者の鶴岡たんはライター経験こそ浅いが本人は優秀らしいので間違った事は書いてないだろう。当時動かなかった、ただそれだけな気がする。
0847nobodyさん2005/04/21(木) 10:55:32ID:???
SQLite を PHP4 で使用してる人ってどれくらいいるのかな?
DBDO はとても便利に使っているけど,PEAR::DBベースという点を考えても,
強い根拠はないが PHP4 用のものという印象がある.
PHP5 用に pdo ベースで PDO_DataObject みたいのを誰か作ってくれないかなー
(と他力本願丸出しな発言を)

>>844
3.の互換性ってのは各種RDBMSをどれほどシームレスに扱えるかということ?
まぁ順当に MDB で決まりじゃね?
おれは DBDO に頼りきりコーディングが多いので DB 使ってるけど.
0848nobodyさん2005/04/21(木) 16:04:07ID:???
>SQLite を PHP4 で使用してる人ってどれくらいいるのかな?

)ノシ

ただPHP4+SQLiteが流行るかっていうと、
PHP4+MySQL程度にはならないと否定的。

SQLiteをパッケージに含めて配布して、動的にdlして使う
っていうのは作る側からすると、インストール環境を考えずに
DBを使える点で楽になるんだけどね。
08498442005/04/21(木) 22:55:10ID:???
>>847
>3.の互換性ってのは各種RDBMSをどれほどシームレスに扱えるかということ?
です。サーバのスペックが貧弱なので、MySQLに特化させてでも
スピードを稼ぎたいので。

>まぁ順当に MDB で決まりじゃね?
ありがとうございます。参考にさせていただきます。
0850nobodyさん2005/04/22(金) 02:15:26ID:???
今からMDBを使うくらいならMDB2にするかな。

>>847
PHP5用だったらcreole + propelというのがおもしろいよ。
exception/interface/iteratorなどをきちんと使って、
PHP5 nativeで書かれている。
0851nobodyさん2005/04/22(金) 06:29:12ID:???
>>850
あー MDB と書いてるが MDB2 のつもりだった.スマソ

propel は面白そうだね.サイトをじっくり読んでみる.情報ありがとう.
後は,自宅の実験サーバ以外 PHP5 なんて全くお目にかかんない現状が何とかされれば……w
みんな 5.1.2 くらいまで待ちかなぁ……
0852nobodyさん2005/04/22(金) 10:20:24ID:???
PostgreSQL 8.0.1に、PHP5のPEAR DB_DataObjectで、
createTable.php流したときに、
テーブルの主キーがとれないんだけど、既出?
0853nobodyさん2005/04/22(金) 11:16:39ID:???
具体的には、生成された継承クラスで、primary_keyが設定されていなくて、
同時に生成されるiniファイル内の KEY も設定されない。

何回もやりなおしてみたけど。
0854nobodyさん2005/04/26(火) 16:06:11ID:???
HTML_QuickFormで
input type=textのreadonlyってできますか?
0855nobodyさん2005/04/26(火) 20:14:44ID:fhmw59us
attributeにdisabledを設定するだけじゃない?
0856 ◆AngelH/kMI 2005/04/27(水) 01:27:12ID:???
>>851
Propelのサイトにある情報は古いから注意。
Ver1.1向けに今記事かいているんでそのうちどっかに載るかもー。
0857nobodyさん2005/04/28(木) 13:17:21ID:???
>>854
RTFM
属性は全て設定可能。style や class の挿入なんかでよく使ってる。
08588572005/04/28(木) 13:18:00ID:???
RTFM って addElement の項ね。
08598542005/05/01(日) 16:54:55ID:???
>>855 >>857 >>858
サンクス
Mojavi + HTML_QuickForm + Smarty
という組み合わせなんですけど、
動的にFormのinput type=textを作成するのは、
どのような方法があるのでしょうか?
0860nobodyさん2005/05/05(木) 21:45:53ID:KICI+UTU
Authって
require_once('Auth/Auth.php');

して普通に使えてますか?僕の環境ではうまくクラスを認識しなかったので
ファイルの内容を移し替えたらうまく認識しました。

上でrequireされてる
PEAR/Auth/Auth.php自体は

include_once('Auth.php');

してるだけだったのでPEAR/Auth.phpの内容を丸ごと
PEAR/Auth/Auth.phpに移し替えたら使えるようになりました。
あれはどういうことだったんだろう?ちょっと疑問なので
知ってる人いたら教えてください。

windows環境で、PEARフォルダにはinclude_pathも通ってます。
0861nobodyさん2005/05/05(木) 22:53:32ID:???
require_once('Auth.php');
こうすればよくない?
0862nobodyさん2005/05/05(木) 22:54:34ID:k8Nl2PhY
ttp://61-24-129-83.rev.home.ne.jp/
っwwwwwwwwwwwwうはっっおkうぇおkwwwwwww
wwwwwwおkうぇwwwwwwwwwwww
うぇっうはっwwwwwwうはっwwwwwwwwwwww
wwwwwwうぇっwwwwwwwwwwww
08638602005/05/05(木) 23:24:36ID:KICI+UTU
>861
PEAR/Auth/Auth/ 以下にコンテナ、コントローラーなどがあるので、
パスの関係上、 PEAR/Auth/Auth.phpに移し替えた移し替えた次第です。
0864nobodyさん2005/05/05(木) 23:27:46ID:???
それは何が原因か知らないけどインストールに失敗している可能性が大。
ふつうはphp_dir/Auth以下に展開されるよ。
% ls /usr/local/share/pear/Auth
Auth.php Container Container.php
08658602005/05/05(木) 23:42:19ID:KICI+UTU
あ、申し訳ありません。上の書き間違えてました。
Auth.php Container Container.php は PEAR/Auth/以下ですね。
でもいずれにしても

require_once('Auth.php');

では読めませんでした。
0866nobodyさん2005/05/07(土) 02:05:32ID:???
Auth/ が存在するディレクトリを include_path に加えとかないといけないんじゃ。
0867nobodyさん2005/05/07(土) 02:42:05ID:???
include_dirの設定と、pearへのフルパスを書いてみそ
0868nobodyさん2005/05/10(火) 00:02:29ID:???
QuickFormにて、addEmptyOption' => true に設定した date項目の初期値を 空白にするには、どうすればよいのでしょうか?
現状、以下のような指定をしていますが、初期値が空白になりません


$form->setDefaults(array(
'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' )
));

// 日付
$DayNow=getdate();
$DateOptions= array(
'language' => 'en',
'format' => 'Y年 m月 d日',
'minYear' => $DayNow[year] - 1,
'maxYear' => $DayNow[year] + 2,
'addEmptyOption'=>true
);

$form->addElement('date', 'fmData', '開始日', $DateOptions);
08698682005/05/10(火) 00:12:19ID:???
自己レス。解決しました orz

$form->setDefaults(array(
'fmData' => array( 'm' => ' ', 'd' => ' ', 'Y' => ' ' )
));

↓

$form->setDefaults(array(
'fmData' => array( 'm' => '', 'd' => '', 'Y' => '' ) // スペースを詰める
));

0870nobodyさん2005/05/13(金) 12:10:11ID:???
DBとMDBの違いって何ですかね?
DBはPerlのDBIみたいに洗練されてると思うのですが
新たに別のモジュールを開発する必要があったのでしょうか?
それって車輪の再発明・・・
0871nobodyさん2005/05/13(金) 12:24:14ID:???
あったから作ったんだろ
0872nobodyさん2005/05/13(金) 15:42:29ID:OaFXqrM9
HTML_QuickForm と Flexyという組み合わせは使えますか?
webで探すとSmartyとの連携ばかりですけど・・・
0873nobodyさん2005/05/13(金) 16:06:53ID:???
HTML_QuickFormにFlexy用のレンダラ(HTML_QuickForm_Renderer_ObjectFlexy)入ってるよ。
pear/doc(s)/HTML_QuickForm/docs/renderersにサンプルあるし。
0874nobodyさん2005/05/13(金) 16:24:26ID:???
>>871
ねーよタコ助。
PEAR::DBは十分洗練されてるだろ。
0875nobodyさん2005/05/13(金) 16:30:29ID:???
洗練されてないやつが欲しかったんだよ
08768722005/05/13(金) 16:35:11ID:???
>>873
ありました、ありがとう。
0877nobodyさん2005/05/13(金) 16:44:07ID:???
PDO は PEAR::DB より速いらしいので期待中
0878nobodyさん2005/05/13(金) 17:38:03ID:???
DBは速度的に他と比べちゃうとちょっと…
コードの洗練具合では圧倒的にMDB2の方が上だね。
0879nobodyさん2005/05/13(金) 19:19:19ID:SDhwmUt9
PEAR::DB で SQLite を使用してますが、
DSN の "mode" => "0644" というのは書き込みできない
という意味でしょうか?

書き込みできるんですが、、、

"mode" => "0666" との違いがわかりません。
0880nobodyさん2005/05/13(金) 19:28:29ID:???
>>879
オーナーとグループと他人の違いはわかる?
08818792005/05/13(金) 19:53:06ID:???
>>880
んとわかります。
ファイルの属性? 666にしないとダメですよね?
そうすると "mode" は関係なく動くような気がします。
ファイル属性 644 だと "mode" 関係なしでダメ。
0882nobodyさん2005/05/13(金) 20:09:55ID:???
>>881
マニュアルのsqlite_open()のページ
08838792005/05/13(金) 20:11:41ID:???
>>881
解決しました。。。 無視されるんですね。
0884nobodyさん2005/05/13(金) 22:23:33ID:MPQs+RJ/
HTML_QuickForm触ってみただけど、IEでJavaScriptエラー出るなぁ・・・。
オブジェクトを指定してくださいって出る。
0885nobodyさん2005/05/14(土) 01:37:11ID:???
>>884
再現コードきぼん
0886 ◆AngelH/kMI 2005/05/14(土) 03:03:01ID:???
>884
Smarty + QuickForm前提で話し進めちゃうけど。
ルールの指定でclientを選択しながら、
{$form.javascript}
を書いていなかったりしません?
08878842005/05/14(土) 09:14:50ID:yiKQRA/S
>>886
書いててもエラー出ます。
インターネットオプションでスクリプトのエラーごとに表示されるように設定していると、
エラーが警告が出ます。そうじゃない場合はエラー表示でません。
(これはたぶんオフにしている人が多いと思う)

freezeさせて、validateが必要なくなった時、form.javascriptはプリントされなくなるのに、
onsubmitの方のvalidate呼び出し関数は残ったままなので、エラーとなるようです。

動作自体に影響はないんだけど、アラートでエラー表示が出るので邪魔になる・・。
0888 ◆AngelH/kMI 2005/05/14(土) 12:21:35ID:???
>887
あー、なるほど。
自分は時間無くてとりあえずserverでのチェックだけにして逃げちゃったんですよ(苦笑
ちょっと時間見つけてコード追ってみるー。
0889nobodyさん2005/05/14(土) 20:13:14ID:???
>>887
あーそれか……
ずっと昔からそうなので,自分はもっのすごくアドホックな対処をしてる.
<script type="text/javascript">if(typeof(validate_フォーム名)=='undefined'){var validate_フォーム名=new Function("return true")}</script>
という HTML を,static エレメントとして追加してやるの.

で,フォーム遷移を管理する自作クラスにそれを組み込んで,
そのままこの問題について忘れてたw
まだ直ってなかったのか……
0890 ◆AngelH/kMI 2005/05/15(日) 05:10:53ID:???
>887
>889
んー。まだよくわからないけどざっくりと。
ルールを記述しているJavascriptはQuickform.phpの1540行目あたり。
getValidationScript()の初めに
if (empty($this->_rules) || $this->_freezeAll || empty($this->_attributes['onsubmit'])) {
return '';
}
とあるから何も返さなくなる。

しかし、addRule(), addGroupRule()したときに
if ('client' == $validation) {
$this->updateAttributes(array('onsubmit'=>'return validate_'.$this->_attributes['id'] . '(this);'));
}
と、onSubmitをつけている=エラーになる。
ここの判定式を$this->_freezeAllがtrueの時に通らないようにすれば大丈夫な気がするです。
08918872005/05/16(月) 10:10:54ID:6UiQU/az
>>889, 890
ありがとうございます。
結局スクリプト側で、form.JavaScriptが空の時は、
アドホックに >>889のコードを入れることで、対応してしまいました。

ところで、HTML_QuickFormで送られた内容の控えをユーザ宛にも
メール送信したいのですが、結果HTMLを表示する要領で、
テキスト形式で結果内容を生成することはできますか?
0892nobodyさん2005/05/16(月) 11:27:58ID:???
QuickFormのcheckboxでvalueの値を1以外にする方法をみっけたので書き込んでおく。
(どっかのスレでやり方探してる人いなかったっけ?)
もし既知のことだったら知ってたらスルーして下さい。

$chk =& $form->createElement("checkbox");

$tmp = $chk;
$tmp->setName("chk[1]");
$tmp->setLabel("No. 1");
$tmp->updateAttributes(array("value"=>"NO1"));
$form->addElement($tmp);

$tmp = $chk;
$tmp->setName("chk[2]");
$tmp->setLabel("No. 2");
$tmp->updateAttributes(array("value"=>"NO2"));
$form->addElement($tmp);

名前を[1]、[2]と配列の添字を指定してやれば、GET or POST後にちゃんと
チェック状態になってくれる。
http://www.php.net/manual/ja/faq.html.php#faq.html.arrays
ここみたいに添字を指定しないと、HTML_QuickForm_elementの_findValue()が値を返せないみたい。

QuickFormのnewってどれも重い気がするので、フォームが多い画面作るときは
オブジェクトをコピーしたほうがいいね。
■ このスレッドは過去ログ倉庫に格納されています