如何从Symfony中的另一个setter获取其他变量的值

时间:2015-05-21 23:15:30

标签: php symfony entity

我正在使用Symfony构建一个简单的CMS。现在,我有一个有效的页面实体CRUD。现在,我想为url添加另一个列/字段。 url字段不会以公开形式显示。我想要做的是从标题字段获取值,用连字符替换所有空格,并有我的网址。但我实现这个问题,url来自null。这是我到目前为止所做的。

/**
 * @var string
 *
 * @ORM\Column(name="url", type="string", length=10)
 */
private $url;


/**
 * @var string
 *
 * @ORM\Column(name="title", type="string", length=60)
 */
private $title;



/**
 * Set url
 *
 * @param string $url
 * @return Page
 */
public function setUrl($title)
{
    $lstr = strtolower($title);

    $this->url = preg_replace("/[\s_]/", "-", $lstr);

    return $this;
}

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

/**
 * Set url
 *
 * @prePersist
 *
 * @param string $url
 * @return Page
 */
public function setUrl()
{
    $lstr = strtolower($this->title);

    $this->url = preg_replace("/[\s_]/", "-", $lstr);

    return $this;
}

@prePersist注释将在持久化到数据库之前执行此方法,因此您将得到您想要的!我希望这会有所帮助:)

答案 1 :(得分:0)

我认为您应该将您的网址列更改为可空。保持你的setter像

一样默认
public function setUrl($url)
{
    $this->url = $url;
    return $this;
}

但是将你的吸气剂变成:

public function getUrl()
{
    if(null !== $this->url){
        return $this->url;
    }

    $lstr = strtolower($this->title);

    return preg_replace("/[\s_]/", "-", $lstr);
}