1

現時点では、この方法を使用して、のユーザーの「役割」を取得していZEND_FORMます。

$identity = Zend_Auth::getInstance()->getIdentity();

すべてのフォームフィールドについて、次のようなフォームフィールドを追加する前に役割を確認します。

if($identity->role=='admin') $form->addElement...

これを行うためのよりスマートな方法はありますか?addElementのオプションなど?

よろしくFrgtv10

4

2 に答える 2

2

あなたがそれをする方法は厄介になるかもしれません。ここで2つのフォームを使用できる可能性があります。1つはすべての人に共通するものを含み、もう1つは最初のものから継承して管理者に機能を追加します。これは、ロールに応じて適切なフォームをインスタンス化するだけなので、メンテナンスがはるかに簡単になります。フォームのどこにでもあるトンではなく、ロールを1つチェックします。

したがって、コントローラーでは次のようになります。

if($identity->role=='admin'){
   $form = new Form_WhateverAdmin();
} else {
   $form = new Form_WhateverNotAdmin();
}

そして、どこ

Form_WhateverNotAdmin extends Zend_Form 

Form_WhateverAdmin extends Form_WhateverNotAdmin
于 2012-12-06T16:02:31.353 に答える
1

既存の要素を削除することもできます。

if($identity->role != 'admin') $form->removeElement('name');
于 2012-12-07T15:37:35.550 に答える