現在、次の設定で Symfony2.1 プロジェクトに Doctrineフィルターを実装しています。
<?php
namespace Acme\Bundle\Entity;
class Article {
/**
* @ORM\Column(type="string")
*/
private $status;
...
}
//app/config/config.yml
doctrine:
orm:
filters:
status:
class: Acme\Bundle\Filter\StatusFilter
enabled: false
....
//src/Acme/Bundle/Filter/StatusFilter.php
namespace Acme\Bundle\Filter;
use Acme\Bundle\Entity\Status;
class StatusFilter extends SQLFilter {
public function addFilterConstraint(ClassMetadata $target, $alias)
{
$filter =
$target->reflClass->implementsInterface('Acme\Bundle\Entity\Status')?
$alias . '.status = ' . Status::PUBLISHED : '';
return $filter;
}
}
Acme\Bundle\Entity\Status は単なるインターフェイスです。
でフィルタが有効になっている場合、コードは期待どおりに機能しconfig.yml
ます。
問題は、管理のためにすべての記事を取得できないことです!
特定のバンドルに対してこのフィルターを有効にする方法はありますか?
ps EntityManager を使用してフィルターを有効および無効にする方法は知って
いますが、フロントエンド バンドルに対して適切な場所を見つけることができません。
私の管理セクションはルートプレフィックスでアクセスできますmyadmin
www.example.com/myadmin/ -> 管理セクション = フィルターを無効にする (設定ではデフォルトで無効になっています) www.example.com/... -> その他 = フィルターを有効にします。