バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品登録画面でログインメンバーによって制限をつけたい

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
DELIGHT
投稿日時: 2016/6/15 18:56
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品登録画面でログインメンバーによって制限をつけたい
この辺りを参考にして下さい。query_builderでもchoicesでもやることは同じです。
http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/query-builder.html

差し出がましいことを申し上げるようですが、外注等に出してはいかがでしょうか?
jef12様が実現したいことの量に対して、地力で解決できることの量が少なすぎるように思います。

また、私が回答した通りに実装した機能にもし問題が発生した際、私は責任を取ることが出来ませんし、それは恐らく他の回答者も同様でしょう。
責任を取れない者にカスタマイズの少なからぬ部分を依存するのは好ましくないと考えます。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/15 18:43
対応状況: 開発中
Re: 商品登録画面でログインメンバーによって制限をつけたい
ありがとうございます。

カテゴリの一覧は取得してきたのですが

choicesであると、その中の1つという条件はどのように指定できるのでしょうか?

先ほどの参考ページのものですと

'choices' => $group->getUsers(),

となっており、これの場合1つという指定がまたわからなくなってしまい…

query_builderとどちらの方が今回の場合、簡単だと思われますか?
DELIGHT
投稿日時: 2016/6/15 17:09
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品登録画面でログインメンバーによって制限をつけたい
choicesでもいいと思います。どちらにせよクエリビルダで条件を指定することになります。

カテゴリはデータベースから取得して下さい。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/15 16:20
対応状況: −−−
Re: 商品登録画面でログインメンバーによって制限をつけたい
query_builderにつきましてご回答ありがとうございます。

別件で、http://symfony.com/doc/current/reference/forms/types/entity.html#using-choices

今回の場合、メンバーの権限が食器販売チームの場合は食器のカテゴリしか選択できないようにするため
こちらにある
'choices'
というものは使用できるのでしょうか?

英文を翻訳サイトにて翻訳させた際の訳であると、今回の要件に使えそうなのかなとも思いまして

あなたはすでにあなたが選択要素に含めるエンティティの正確なコレクションを持っている場合は、単に選択肢のキーを介して渡します。
以下、翻訳サイト使用時の訳

あなたが$グループ変数を持っている場合たとえば、(フォームのオプションとして、おそらくあなたのフォームに渡される)とgetUsersは、Userエンティティのコレクションを返し、その後、あなたが直接選択オプションを供給することができます:

if文にて食器販売チームかどうかを判別しその中であるので指定できるのは食器のカテゴリのみとなるため

choicesについてお分かりになる方がいましたら、ご教示いただければと思います。
また、カテゴリ情報はどこの変数に入っているのでしょうか??


よろしくお願いいたします
DELIGHT
投稿日時: 2016/6/15 15:42
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品登録画面でログインメンバーによって制限をつけたい
EntityRepositoryの$erは、読んで字のごとくエンティティのリポジトリです。
では何のエンティティかというと、下記のclassで設定されているEccube\Entity\CustomerAddressです。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Form/Type/ShippingMultipleItemType.php#L73

CustomerAddressのクエリビルダを取得する際にcaというエイリアスを付与しているのが下記の行です。
https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Form/Type/ShippingMultipleItemType.php#L76

要は、entityタイプのフォームで利用するエンティティの一覧を取得するのに使うクエリビルダを生成して返しています。

関数を渡している理由とか仕組みまでは私も把握していないので気になるようであればソースを追って下さい。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/15 14:59
対応状況: 開発中
Re: 商品登録画面でログインメンバーによって制限をつけたい
DELIGHT様、いつもご回答ありがとうございます。
上記内容非常にわかりやすくありがとうございました。

また、上記でquery_builderを使用するのはどうでしょうか?というご提案がありquery_builderについて調べていましたが、詰まってしまう部分がありましたのでわかる方いましたらお願いいたします。

http://symfony.com/doc/current/reference/forms/types/entity.html#using-a-custom-query-for-the-entities

https://github.com/EC-CUBE/ec-cube/blob/3.0.10/src/Eccube/Form/Type/ShippingMultipleItemType.php#L75</blockquote></div>

これらを参考にしているのですが、query_builderで

'query_builder' => function (EntityRepository $er) use ($Customer) {
return $er->createQueryBuilder('ca')
    ->where('ca.Customer = :Customer')
    ->orderBy("ca.id", "ASC")
    ->setParameter('Customer', $Customer);
},

このようになっている場合、functionの後ろには何を記載しているのでしょうか?
createQueryBuilderを呼び出しているため
vendor\doctrine\orm\lib\Doctrine\ORMの
クラスを記載しているものと思いますが

createQueryBuilder自体が
EntityManager.phpとEntityRepository.phpにあるため
どちらを呼び出すのだろうと悩んでしまいました。

また、createQueryBuilderの後ろも''で囲われているもので
ここはテーブルの略称なのかな?と思うのでなんでもいいのかもしれませんがこの2点

ご教示いただけますと幸いです。
よろしくお願いいたします。
DELIGHT
投稿日時: 2016/6/15 11:49
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品登録画面でログインメンバーによって制限をつけたい
3つ前のレスポンスを見て、Form(PHP)での対応は諦めてtwig側で対応するものと勘違いしました。

if ($app['user']->getAuthority()->getId() == 0) {

Form側なら上記のような書き方になるのではないでしょうか。

MemberもAuthorityも全てエンティティですから、詳しくはEccube\Entity以下を参照して下さい。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/15 11:31
対応状況: −−−
Re: 商品登録画面でログインメンバーによって制限をつけたい
引用:

appのuserのAuthorityのidを使えばいいのでは。
{% if app.user.Authority.id == 0%}


formでも上記のような書き方できましたっけ?
twigではできるかと思っているのですが

自分の書き方がダメだったのか、HTTPの500エラーっとなってしまい・・・

条件文を0かそれ以外として組んだ際には最後のところに
{% endif %}をつける以下の形で大丈夫ですよね?


{% if app.user.Authority.id == 0%}
・・・
{% else %}
・・・
{% endif %}
DELIGHT
投稿日時: 2016/6/15 11:00
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品登録画面でログインメンバーによって制限をつけたい
appのuserのAuthorityのidを使えばいいのでは。
{% if app.user.Authority.id == 0%}


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

ゲスト
投稿日時: 2016/6/15 10:12
対応状況: 開発中
Re: 商品登録画面でログインメンバーによって制限をつけたい
現在、条件分岐は完成しているのですが現時点では以下となり
ログインユーザ名での分岐となっています

if ($app[user] == システム管理者) {
・・・
}

これでも対応はできるのですが
権限によって変える方が後々の増加対応時などにも影響範囲が少ないかと思っていますが
権限のIDは
Authorityのidかと思っていますがその部分を取得させるにはどのようにすればよいか詰まってしまっております。

どなたか分かる方がいましたらご教示いただければと思います。

$app['user']でdumpさせた場合に
Member {#645 ▼
-id: 2
-name: "管理者"
-department: "EC-CUBE SHOP"
-login_id: "ecadmin"
-password: "-----------------------------------------"
-salt: "----------------------------------------"
-Authority: Authority {#585 ▼
+__isInitialized__: false
-id: "0"
-name: null
-rank: null
…2
}
・・・

上記が出ているのですが、このAuthorityのidが使えれば一番便利なのかなと思いまして・・・
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,973名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.