den*_*281 0 symfony1 jobeet symfony-1.4
HI!我使用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)
Run Code Online (Sandbox Code Playgroud)
模型:
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();
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但下一个问题是,如果广告的所有者没有支付保费,他也看不到广告的扩展版本,就像所有用户一样......是否有可能将用户重定向到404页面,而是其他页面,我可以说用户,为什么他看不到他的广告的扩展版本?或者广告所有者是否可以通过其他方式查看扩展版本?谢谢 !
是的,这是可能的.
修改路由以允许返回空对象:
ads_show_user:
...
options: { allow_empty: true ... }
Run Code Online (Sandbox Code Playgroud)
现在,在您的操作中,当您调用时$this->getRoute()->getObject()
,如果找不到对象,则不会404.然后,您可以根据需要处理此案例(或案例).
归档时间: |
|
查看次数: |
221 次 |
最近记录: |