バージョン選択

フォーラム

メニュー

オンライン状況

44 人のユーザが現在オンラインです。 (36 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 44
もっと...

サイト内検索

質問 > 管理機能 > 一覧の上にある検索フォームについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
start
投稿日時: 2020/11/20 19:22
対応状況: −−−
一人前
登録日: 2017/11/9
居住地:
投稿: 109
一覧の上にある検索フォームについて
商品テーブル元にして新規テーブル作成してそのテーブルに対して一覧画面を作成しました。商品一覧と同じように検索フォームも作成しました。
検索値を選択して検索したら問題なしで動いていますが検索した後に別の画面へ移動してまた新規作成してテーブルの一覧画面へ戻ると検索フォームの値が前の状態ままでした。どうやって初期化します。

public function index(Request $request, $page_no = 1, Paginator $paginator)
{
$builder = $this->formFactory
->createBuilder(SearchProductTestType::class);
$searchForm = $builder->getForm();

/**
* ページの表示件数は, 以下の順に優先される.
* - リクエストパラメータ
* - セッション
* - デフォルト値
* また, セッションに保存する際は mtb_page_maxと照合し, 一致した場合のみ保存する.
**/
$page_count = $this->session->get('eccube.admin.order.search.page_count',
$this->eccubeConfig->get('eccube_default_page_count'));

$page_count_param = (int) $request->get('page_count');
$pageMaxis = $this->pageMaxRepository->findAll();

if ($page_count_param) {
foreach ($pageMaxis as $pageMax) {
if ($page_count_param == $pageMax->getName()) {
$page_count = $pageMax->getName();
$this->session->set('eccube.admin.order.search.page_count', $page_count);
break;
}
}
}

if ('POST' === $request->getMethod()) {
$searchForm->handleRequest($request);
if ($searchForm->isValid()) {
/**
* 検索が実行された場合は, セッションに検索条件を保存する.
* ページ番号は最初のページ番号に初期化する.
*/
$page_no = 1;
$searchData = $searchForm->getData();

// 検索条件, ページ番号をセッションに保持.
$this->session->set('eccube.admin.product.search1', FormUtil::getViewData($searchForm));
$this->session->set('eccube.admin.product.search.page_no', $page_no);
} else {
// 検索エラーの際は, 詳細検索枠を開いてエラー表示する.
return [
'searchForm' => $searchForm->createView(),
'pagination' => [],
'pageMaxis' => $pageMaxis,
'page_no' => $page_no,
'page_count' => $page_count,
'has_errors' => true,
];
}
} else {
if (null !== $page_no || $request->get('resume')) {
/*
* ページ送りの場合または、他画面から戻ってきた場合は, セッションから検索条件を復旧する.
*/
if ($page_no) {
// ページ送りで遷移した場合.
$this->session->set('eccube.admin.product.search.page_no', (int) $page_no);
} else {
// 他画面から遷移した場合.
$page_no = $this->session->get('eccube.admin.product.search.page_no', 1);
}
$viewData = $this->session->get('eccube.admin.product.search1', []);
$searchData = FormUtil::submitAndGetData($searchForm, $viewData);
} else {
/**
* 初期表示の場合.
*/
$page_no = 1;
// submit default value
$viewData = [];
$searchData = FormUtil::submitAndGetData($searchForm, $viewData);

// セッション中の検索条件, ページ番号を初期化.
$this->session->set('eccube.admin.product.search1', $viewData);
$this->session->set('eccube.admin.product.search.page_no', $page_no);
}
}

$qb = $this->productTestRepository->getQueryBuilderBySearchDataForAdmin($searchData);

$pagination = $paginator->paginate(
$qb,
$page_no,
$page_count
);


return [
'searchForm' => $searchForm->createView(),
'pagination' => $pagination,
'pageMaxis' => $pageMaxis,
'page_no' => $page_no,
'page_count' => $page_count,
'has_errors' => false,
];
}

▼テンプレート
[EC-CUBE] EC-CUBEのバージョン、新規インストールかアップデートか、等
[レンタルサーバ] レンタルサーバ名
[OS] 使用しているOS名、バージョン
[PHP] 使用しているPHPのバージョン
[データベース] 使用しているDB名、バージョン
[WEBサーバ] 使用しているWEBサーバ名、バージョン
[ブラウザ] 使用しているブラウザ名、バージョン
[導入プラグインの有無] あれば導入プラグインを記載
[カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に)
[現象] 再現手順や、どのような現象が発生しているかなど、具体的に
468
投稿日時: 2020/11/20 20:17
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 一覧の上にある検索フォームについて
検索条件を保持したセッションがクリアされていないのだと思います。

/**
* 初期表示の場合.
*/
の部分の処理を通過していないのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.