method_for_query、カスタムページにリダイレクトします
-
14-11-2019 - |
質問
こんにちは!Symfony 1.4.11を使用します。 私のプロジェクトのすべてのユーザー広告では、それが所有者がプレミアムアカウントを持つときだけサイトで利用可能です。問題はすべての広告が直接リンクで利用可能であることです... Jobbetの6日目からこの問題の決定を使用します。 ルーティング:
ads_show_user:
url: /:sf_culture/ads/:slug
class: sfDoctrineRoute
options: { model: Ads, type: object, method_for_query: retrievePayAd }
param: { module: ads, action: show }
requirements:
sf_method: [get]
sf_culture: (?:de|en|ru)
.
モデル:
public function retrievePayAd(Doctrine_Query $q)
{
$q ->leftJoin('a.Owner o')
->leftJoin('o.Profile p')
->andWhere('p.payed_until > NOW()')
->andWhere('a.active = ?',1)
->andWhere('a.expires_at > NOW()');
return $q->fetchOne();
}
.
とすべてがうまくいっていますが、広告の所有者がプレミアムの支払いをしていない場合、彼はすべてのユーザーと同じように、彼の広告の拡張版も見ることができません...しかし、私がユーザーと言える他のページに、彼は彼の広告の拡張版を見ることができない理由?それとも広告の所有者が拡張版を見ることができる他の方法はありますか?ありがとうございました!
解決
はい、それは可能です。
空のオブジェクトを返すようにルートを変更する:
ads_show_user:
...
options: { allow_empty: true ... }
.
今、あなたのアクションでは、$this->getRoute()->getObject()
を呼び出すと、オブジェクトが見つからない場合は404は404になりません。その後、このケース(またはケース)を処理できますが、望みます。
所属していません StackOverflow