Symfony1 方法\u用于\u查询,重定向到自定义页面

Symfony1 方法\u用于\u查询,重定向到自定义页面,symfony1,symfony-1.4,jobeet,Symfony1,Symfony 1.4,Jobeet,嗨!我使用symfony 1.4.11。 在我的项目的所有用户广告中,只有当它的所有者拥有一个高级帐户时,才可以在网站上使用。问题是所有广告都可以在直接链接上使用…所以我从Jobbet的第6天开始使用这个问题的决策。 路由: 型号: public function retrievePayAd(Doctrine_Query $q) { $q ->leftJoin('a.Owner o') ->leftJoin('o.Profile p') ->

嗨!我使用symfony 1.4.11。 在我的项目的所有用户广告中,只有当它的所有者拥有一个高级帐户时,才可以在网站上使用。问题是所有广告都可以在直接链接上使用…所以我从Jobbet的第6天开始使用这个问题的决策。 路由:

型号:

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();
  }
所有这些都很好,但下一个问题是,若广告的所有者并没有支付额外费用,那个么他也不能像所有用户一样看到他的广告的扩展版本。。。是否有可能将用户重定向到另一个页面,而不是404页面,在那个里我可以说用户,为什么他看不到他的广告的扩展版本?或者,广告所有者是否有其他方式可以查看扩展版本?谢谢大家!

是的,这是可能的

修改路由以允许返回空对象:

ads_show_user:
  ...
  options: { allow_empty: true ... }
现在,在您的操作中,当您调用
$this->getRoute()->getObject()
时,如果找不到对象,它将不会执行404。然后,您可以按照自己的意愿处理此案例。

是的,这是可能的

修改路由以允许返回空对象:

ads_show_user:
  ...
  options: { allow_empty: true ... }
现在,在您的操作中,当您调用
$this->getRoute()->getObject()
时,如果找不到对象,它将不会执行404。然后,您可以按照自己的意愿处理这个(或多个)案例