2017-08-07 72 views
0

我有兩個實體候選人並具有許多PROGRAMTYPE一一對應關係@assert NotEqualTo()不工作

Candidate.php:

/** 
* @ORM\ManyToOne(targetEntity="ProgramType", inversedBy="candidates") 
* @ORM\JoinColumn(name="program_type", referencedColumnName="id") 
* @Assert\NotBlank(message="lead.programtype.not_blank",groups={"registration","profile"}) 
* @Assert\NotEqualTo("1",groups={"registration","profile"}) 
*/ 
public $programtype; 

ProgramType.php:

/** 
* One ProgramType has Many Candidates. 
* @ORM\OneToMany(targetEntity="Candidate", mappedBy="programtype") 
*/ 
private $candidates; 

public function __construct() { 
    $this->candidates = new ArrayCollection(); 
} 

問題是這條線@Assert\NotEqualTo("1",groups={"registration","profile"})。 assert語句不起作用。有任何想法嗎?

+0

是否沒有團體合作? – svgrafov

+0

沒有它沒有組沒有工作 – utkarsh2k2

回答

0

您的programTypeProgramType類型的對象,因此「1」是一個字符串或一個數字......或任何PHP想要它。

http://php.net/manual/en/language.operators.comparison.php

$一個!= $ B不等於TRUE,如果$ a不等於$ b型 雜耍之後。

然後你相信PHP的類型戲法。

而應該做這樣的事情,使用Expression validator

@Assert\Expression( 
    expression="this.programTypeIsNotEqualTo()", 
    groups={"registration","profile"} 
) 

和實施

public function programTypeIsNotEqualTo() { 
    return $this->programType->getId()!==1; 
} 
在實體

UPDATE:表達式驗證已在Symfony的2.4被引入,所以在2.3版本中你可以使用回撥驗證,在實體上方

/** 
* @Assert\Callback(
* methods={"programTypeIsNotEqualTo"} 
* groups={"registration","profile"} 
*) 
* @Entity() 
* 
*/ 
    class XXXX { 
    } 
+0

根據您的建議,我改變了我的實體爲'/ ** * @ORM \ ManyToOne(targetEntity =「ProgramType」,inversedBy =「candidates」) * @ORM \ JoinColumn(name =「程序類型「,referencedColumnName =」id「) * @Assert \ NotBlank(message =」lead.programtype.not_blank「,groups = {」registration「,」profile「}) * @Assert \ Expression( * this.programTypeIsNotEqualTo (), *基團= { 「登記」, 「簡檔」} *) */ 公共$ PROGRAMTYPE; ! 公共職能programTypeIsNotEqualTo(){ 回報$這個 - > programType->的getId()== 1; }' – utkarsh2k2

+0

但架構的更新給了我錯誤' [主義\ COMMON \註解\ AnnotationException] [語義錯誤]註釋 「@Symfony \分量\驗證\約束 \表達」 物業EPITA \ CrmBundle \實體\候選人:: $ programtype doe s不存在,或者不能自動加載。 ' – utkarsh2k2

+0

@ utkarsh2k2對不起,我在響應中編輯了斷言 – ste