Ticket #1006 (closed 改善提案: 修正済)
検索パラメータの引き継ぎというコード
| Reported by: | miningbrownie | Owned by: | nanasess |
|---|---|---|---|
| Priority: | 中 | Milestone: | EC-CUBE2.11.0 |
| Component: | その他 | Version: | 2.11.0 β |
| Keywords: | Cc: | ||
| 修正済み: |
Description
LC_Page_Admin_Order_Mailで発見した
// 検索パラメータの引き継ぎ
- foreach ($_POST as $key => $val) {
- if (ereg("^search_", $key)) {
- $this->arrSearchHidden[$key] = $val;
- }
- }
もしこの処理がLC_Page_Admin_.*の色々なところに入っているようであれば、LC_Page_Adminに下記コードを追加したい。
/**
* 検索パラメータを配列で返す
*/
function getSearchParameters($post){
// 検索パラメータの引き継ぎ
$searchHiddenParams = array();
foreach ($post as $key => $val) {
if (preg_match("/^search_/", $key)) {
$searchHiddenParams[$key] = $val;
}
}
return $searchHiddenParams;
}
まずはどこで使われているか要調査。
Change History
comment:2 follow-up: ↓ 3 Changed 15 years ago by kimoto
同じことを思ってSC_Utilsに作ってしまいました
/**
* keyが正規表現にマッチした配列のみ値を返す
*
* @param mixed $array
* @param mixed $regex
* @access public
* @return array $results
*/
function sfFilterKey($array, $regex) {
foreach ($array as $key => $val) {
if (preg_match("/{$regex}/", $key)) {
$results[$key] = $val;
}
}
return $results;
}
comment:3 in reply to: ↑ 2 Changed 15 years ago by miningbrownie
- Status changed from new to closed
- Resolution set to 無効
kimoto への返信 使わせていただきます!
comment:4 Changed 15 years ago by nanasess
- Status changed from closed to reopened
- Resolution 無効 deleted
スミマセン. r20133 で, SC_FormParam::getSearchArray() という関数を追加しています.
フォームに対しての処理なので, 確実に入力チェック後の値を取得できることから, こちらの方が良さげだと思いますが, いかがでしょう?
もちろん, SC_FormParam::getSearchArray() の内部で SC_Utils::sfFilterKey() を使用しても良いと思います.
備忘録として差し戻しておきますね.
comment:5 Changed 15 years ago by kotani
- Component changed from フロント to その他
- Milestone changed from EC-CUBE2.11.0 リファクタリングProject to EC-CUBE2.11.0
SC_FormParam::getSearchArray() で統一します。
SC_Utils::sfFilterKey() を使っている下記ページを修正する必要があります。
LC_Page_Admin_Order_Mail.php
LC_Page_Admin_Total.php
Note: See
TracTickets for help on using
tickets.

find ./data/class/pages/admin/ -name "*.php" -exec grep -C 5 -n "foreach (._POST " {} \; -print
242- // ページ送り用 243- $this->arrHidden['search_pageno'] = 244- isset($_POST['search_pageno']) ? $_POST['search_pageno'] : ""; 245- 246- // 検索ワードの引き継ぎ 247: foreach ($_POST as $key => $val) { 248- switch($key) { 249- case 'sex': 250- case 'status': 251- $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 252- if(!is_array($val)) { ./data/class/pages/admin//customer/LC_Page_Admin_Customer.php 98- 99- // 認証可否の判定 100- SC_Utils_Ex::sfIsSuccess($objSess); 101- 102- // 検索パラメータの引き継ぎ 103: foreach ($_POST as $key => $val) { 104- if (ereg("^search_", $key)) { 105- $this->arrSearchHidden[$key] = $val; 106- } 107- } 108- -- 170- break; 171- 172- /* 商品削除*/ 173- case 'delete_product': 174- $delete_no = $_POST['delete_no']; 175: foreach ($_POST AS $key=>$val) { 176- if (is_array($val)) { 177- foreach ($val AS $k=>$v) { 178- if ($k != $delete_no) { 179- $arrData[$key][] = $v; 180- } ./data/class/pages/admin//order/LC_Page_Admin_Order_Edit.php 95- 96- // POST値の引き継ぎ 97- $this->arrForm = $_POST; 98- 99- // 検索ワードの引き継ぎ 100: foreach ($_POST as $key => $val) { 101- if (ereg("^search_", $key) || ereg("^campaign_", $key)) { 102- switch($key) { 103- case 'search_product_flag': 104- case 'search_status': 105- $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); ./data/class/pages/admin//products/LC_Page_Admin_Products.php 118- 119- // 規格の有り無し判定 120- $this->tpl_nonclass = !$objDb->sfHasProductClass($_POST['product_id']); 121- 122- // 検索パラメータの引き継ぎ 123: foreach ($_POST as $key => $val) { 124- if (ereg("^search_", $key)) { 125- $this->arrSearchHidden[$key] = $val; 126- } 127- } 128- ./data/class/pages/admin//products/LC_Page_Admin_Products_Product.php 97- $select="review_id, A.product_id, reviewer_name, sex, recommend_level, "; 98- $select.="reviewer_url, title, comment, A.status, A.create_date, A.update_date, name"; 99- $from = "dtb_review AS A LEFT JOIN dtb_products AS B ON A.product_id = B.product_id "; 100- 101- // 検索ワードの引き継ぎ 102: foreach ($_POST as $key => $val) { 103- if (ereg("^search_", $key)) { 104- switch ($key){ 105- case 'search_sex': 106- $this->arrHidden[$key] = SC_Utils_Ex::sfMergeParamCheckBoxes($val); 107- if(!is_array($val)) { -- 129- } 130- //エラーチェック 131- $this->arrErr = $this->lfCheckError(); 132- 133- if (!$this->arrErr){ 134: foreach ($_POST as $key => $val){ 135- 136- if($val == "") { 137- continue; 138- } 139- ./data/class/pages/admin//products/LC_Page_Admin_Products_Review.php 74- $this->objQuery = new SC_Query(); 75- // 認証可否の判定 76- SC_Utils_Ex::sfIsSuccess($objSess); 77- 78- // 検索ワードの引継ぎ 79: foreach ($_POST as $key => $val){ 80- if (ereg("^search_", $key)){ 81- $this->arrSearchHidden[$key] = $val; 82- } 83- } 84- ./data/class/pages/admin//products/LC_Page_Admin_Products_ReviewEdit.php抽象化しないといけないかも知れない。。。。。