2017年10月 / 09月≪ 12345678910111213141516171819202122232425262728293031≫11月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2012.03.16 (Fri)

EC-CUBEでaddParamした値を上書きしたい

EC-CUBEで$objFormParam->addParam()で追加したパラメータを上書きしたいなあって何度も思う。
必須を外したいとか、必須にしたいとか、文字数ちょっとだけ増やしたいとか。
できたら元クラスの編集じゃなく、EXクラスで書き換えたいじゃん。
後でアップデートして設定戻ったってなったらめんどくさくて仕方ない。
もう一回同じキーで$objFormParam->addParam()を呼んだら上書きされるかなと思ったけど駄目。

てことでSC_FormParam_Ex.phpに上書きする処理入れることにした。
data/class_extends/SC_FormParam_Ex.php

/**
* addParamで追加したデータを上書きする用の処理
*/
function updateParam($disp_name, $keyname, $length = "", $convert = "", $arrCheck = array(), $default = "", $input_db = 'true') {
$i = array_search($keyname, $this->keyname);
if($i !== false){
$this->disp_name[$i] = $disp_name;
$this->length[$i] = $length;
$this->convert[$i] = $convert;
$this->arrCheck[$i] = $arrCheck;
$this->default[$i] = $default;
$this->input_db[$i] = $input_db;
}
}

これで$keynameが同じパラメータが既にあった場合は上書きされ、なかった場合はなんもなし。
使い方はaddParam後に呼ぶ。EXクラスのlfInitParam等のオーバーライドの際に使うと楽

function lfInitParam(&$objFormParam) {
parent::lfInitParam($objFormParam);
// やっぱ性別必須じゃなくていいやとか
$objFormParam->updateParam("性別", 'sex', INT_LEN, 'n', array("NUM_CHECK", "MAX_LENGTH_CHECK"));
}


addParamオーバーライドして、最初に$keynameでパラメータ存在チェック、あったら自動で上書き
って言う処理にしようかと思ったけど、なんか影響あったらめんどくさいのでとりあえず分けた。

画面フォームに表示される「*」「(必須)」だとかはdata/Smartyの方変えないといけないけど。
必須表示も自動になったら良いのにね。


 |  01:51  |  PHP  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。