質問 > 管理機能 > 商品登録画面でログインメンバーによって制限をつけたい |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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様が実現したいことの量に対して、地力で解決できることの量が少なすぎるように思います。 また、私が回答した通りに実装した機能にもし問題が発生した際、私は責任を取ることが出来ませんし、それは恐らく他の回答者も同様でしょう。 責任を取れない者にカスタマイズの少なからぬ部分を依存するのは好ましくないと考えます。
|
ゲスト |
投稿日時: 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でもいいと思います。どちらにせよクエリビルダで条件を指定することになります。
カテゴリはデータベースから取得して下さい。
|
ゲスト |
投稿日時: 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タイプのフォームで利用するエンティティの一覧を取得するのに使うクエリビルダを生成して返しています。 関数を渡している理由とか仕組みまでは私も把握していないので気になるようであればソースを追って下さい。
|
ゲスト |
投稿日時: 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側で対応するものと勘違いしました。
Form側なら上記のような書き方になるのではないでしょうか。 MemberもAuthorityも全てエンティティですから、詳しくはEccube\Entity以下を参照して下さい。
|
ゲスト |
投稿日時: 2016/6/15 11:31
対応状況: −−−
|
Re: 商品登録画面でログインメンバーによって制限をつけたい 引用:
formでも上記のような書き方できましたっけ? twigではできるかと思っているのですが 自分の書き方がダメだったのか、HTTPの500エラーっとなってしまい・・・ 条件文を0かそれ以外として組んだ際には最後のところに {% endif %}をつける以下の形で大丈夫ですよね?
|
|
DELIGHT |
投稿日時: 2016/6/15 11:00
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: 商品登録画面でログインメンバーによって制限をつけたい appのuserのAuthorityのidを使えばいいのでは。
|
ゲスト |
投稿日時: 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 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |