質問 > フロント機能 > カテゴリ登録画面にチェックボックスの項目を追加する |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
taiton |
投稿日時: 2013/2/28 6:45
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 11 |
カテゴリ登録画面にチェックボックスの項目を追加する EC-CUBE: 2.4.4
DBサーバ: PostgreSQL 9.1.2 PHP: 5.3.8 カテゴリ登録画面にチェックボックスの項目を追加して、チェックが入っていればDBに1を、入っていなければ0(Default値)を登録したいと考えています。 ====== DB ====== dtb_category に test_flg を追加 ======= category.tpl =======
ここの記述ではHTMLのテーブルタグなどを省略していますが上記を追加しました。 ======= LC_Page_Admin_Products_Category_Ex.php =======
を追加で記述したところで次に何をすれば良いのか分からなくなっております。 カテゴリの新規登録部分に 入力データを渡す為に $sqlval などを記述する必要があると思いますがどのように記述すれば良いのかよく分かりませんでした。 分かる方がいらっしゃいましたら教えてください。 |
dkazuto |
投稿日時: 2013/2/28 9:42
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する taiton様
まず、monopolistic_flgとtest_flgで名前を分けられた理由はありますでしょうか。 名前を統一したほうがECCUBEのフレームワーク上カスタマイズしやすいため名前がtest_flgで統一されている想定で書きます。 /data/class/pages/admin/products/LC_Page_Admin_Products_Category.php の236行目当たりのlfInsertCat関数内に
から始まる部分があるかと思います。 こちらを
のように書き換えます。 また、/data/class/pages/admin/products/LC_Page_Admin_Products_Category.php の236行目当たりのlfUpdateCat関数内の同様の部分を
というように書き換えます。 さらに、同ファイル285行目当たりにlfInitParamという関数がありますので、そちらを下記のように書き換えます。
以上で、カテゴリ登録時にチェックボックスにチェックがはいっていると データベースにチェック情報を登録できるようになるかと思います。 以上、ご参考となればと思います。 |
taiton |
投稿日時: 2013/2/28 13:26
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 11 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する ありがとうございます。
試してみましたところ、NULLが登録されてしまい、 カテゴリでそのチェックを入れて登録して、再度編集しようとするとチェックが外れています。 他の部分に何か記述する必要があるのでしょうか? >monopolistic_flgとtest_flgで名前を分けられた理由はありますでしょうか。 こちらは記述ミスでした。 投稿を修正いたしました。 |
taiton |
投稿日時: 2013/2/28 14:59
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 11 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する すみません。勘違いしていたようでして、
dkazutoの記述された様にするとチェックボックスにチェックを入れるとDBに1が登録出来るようになっていました。 ひとつ前に記述した 引用: >試してみましたところ、NULLが登録されてしまい、 は間違いでした。 現状は、 カテゴリでそのチェックを入れて登録するとDBに「1」が登録され、再度編集しようとするとチェックが入ってうまく機能しているようでした。 ところが、チェックを外して再登録すると、「0」を登録するはずが「NULL」が登録されてしまいます。 (データベースのデフォルト値は「0」に設定しています) これはどこに原因があるかおわかりになりますでしょうか? |
dkazuto |
投稿日時: 2013/2/28 15:28
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する taiton様
すみません、私の記述ミスでした。 挿入するsqlvalに0を加える場合はクォテーションで囲む必要があるようでした。 以前私が付け加えたif分を以下のように変えてみてください。
こちらで一度お試しください。 |
taiton |
投稿日時: 2013/3/2 4:17
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 11 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する dkazuto様
お返事が遅くなり大変申し訳ありません。 そしてお返事ありがとうございます。 一時出来るようになったDBへの「1」登録も何故か出来なくなってしまい、 その後、別のことでバタバタとしてしまっていてうまく整理できないでおりました。 先程やっと整理させていただきました。 このメッセージに返信する形で現状を書き込みさせていただきます。 ありがとうございました。 |
taiton |
投稿日時: 2013/3/2 4:34
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 11 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する
ですが、 ifの後にempty()で囲まれていると、このif文は機能しないようです。 empty()を外すとelseのものが反映されます。 これはチェックボックスに「チェック」が「ある」「ない」に関わらず、elseのものが反映されます。 つまり、
上記のように記述し、チェックボックスに「チェック」を入れると、 DBに「1」が登録されます。 チェックボックスに「チェック」を入れないで登録しても、 DBに「1」が登録されます。 (これを逆にすると「0」が登録されます。) この反応を見ていると、
部分で全てfalse判定になっているようです。 チェックボックスに「チェック」が入っていれば 、 「1」 入っていなければ、 「0」 がDBに登録されるようにしたいです。 この部分どのように記述すれば良いか分かる方いらっしゃいますでしょうか? よろしくお願いいたします。 |
dkazuto |
投稿日時: 2013/3/14 12:23
対応状況: −−−
|
一人前 登録日: 2012/5/10 居住地: 投稿: 95 |
Re: カテゴリ登録画面にチェックボックスの項目を追加する taiton様
ご返信が遅れ申し訳ありません。 こちらはDBの値がカテゴリ管理画面に反映されないことが問題ではないでしょうか。 順番に整理していきますと、まず category.tplで
のように記述します。 これは、チェックボックスがチェックされていたら1をサーバに送信し、チェックされていなかったらパラメータを送信しないという記述になります。 それによりサーバ側で値を受け取る処理は次のようになります。 LC_Page_Admin_Products_Category.phpの240行目(新規挿入部分)当たりと263行目(編集部分)当たりを以下のようにします。
もし、test_flgというパラメータが設定されていれば1をDBに格納し パラメータが設定されていないか1以外ならば0をDBに格納するという処理を行っています。 ※以前私が、お教えしたemptyではチェックしきれない部分があったかと思います。 こちら、失礼致しました。 さらに、管理画面上で編集ボタンを押した際にDBからの値が引き継げるようにする必要もあります。 LC_Page_Admin_Products_Category.phpの117行目当たり(modeのcase: pre_edit内)に以下のような記述を追加します。
こちらはDBからtest_flgを取得し、arrFormに格納し、管理画面上で表示させるために利用します。 以上の流れで、新規作成→編集→削除まで正常に行えるかと思います。 よろしくお願いします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |