1

オプションを使用して、admin ジェネレーター構成で list アクションに使用されるクエリを変更できtable_methodます。例えば、

# apps/backend/modules/job/config/generator.yml
config:
  list:
    table_method: retrieveBackendJobList

しかし、管理ジェネレーターのすべてのアクションを制限したいと思います。特に、表示、編集、削除などのすべてのオブジェクトを、現在の曜日または時刻に依存する特定の属性を持つオブジェクトに制限したいと考えています。

モデルクラスをオーバーライドしたくありません。他のアプリでは制限を変更したい (または制限をまったく設定しない) ためです。

どこ (つまり、どのファイル) で、どのようにこの変更を行うことができますか?

4

2 に答える 2

1

おそらく table_method と generator.yml 機能を使用してアクション ボタンを追加および削除することで、既にインデックス (つまりリスト) アクションのカスタマイズを行っているはずです。

他のアクションについては、これらのカスタム クエリのモデルに追加のメソッドを作成することをお勧めします。ただし、デフォルトの動作をオーバーライドする場所は、モジュールの actions.class.php ファイルにあります。

したがって、あなたの例では、apps/backend/modules/job/actions/actions.class.php ファイルを編集し、変更する必要がある各アクションのカスタム コードを記述します。

たとえば、次のように削除動作を変更できます。

# apps/backend/modules/job/actions/actions.class.php
require_once dirname(__FILE__).'/../lib/jobGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/jobGeneratorHelper.class.php';

class jobActions extends autoJobActions
{ 
  /**
   * Override standard delete action.
   * @param sfWebRequest $request A request object
   */
  public function executeDelete(sfWebRequest $request) {
    if ($some_custom_condition) {
      $job = Doctrine_Core::getTable('job')->find($request->getParameter('id'));
      $job->delete();
      $this->getUser()->setFlash('notice', 'Record deleted.');
      return sfView::SUCCESS;
    } else {
      $this->getUser()->setFlash('error', 'You do not have permission to do that.');
      return sfView::ERROR;
    }
  }
}
于 2011-05-10T18:21:22.160 に答える