Symfony 2 - 在实体类中编写新方法

时间:2013-10-26 14:26:03

标签: symfony entity

我正在尝试在我的实体类中编写新的get方法

这是属性

protected $courseLink;

它的get方法

/**
     * Get courseLink
     *
     * @return string 
     */
    public function getCourseLink()
    {
        $this->courseLink = '/courses/'.$this->getCourseTitle();

        return $this->courseLink;
    }

getCourseTitle方法

/**
     * Get courseTitle
     *
     * @return string 
     */
    public function getCourseTitle()
    {
        return $this->courseTitle;
    }

这是带有选择查询的控制器

    $em = $this->getDoctrine()->getEntityManager();
    $query = $em->createQuery(
    'SELECT c FROM DprocMainBundle:Courses c ORDER BY c.Id DESC'
    );
    $course = $query->setMaxResults(4)->getResult();
    //print_r($course);
    return $this->render('DprocMainBundle:Dproc:index.html.twig', array('courses' => $course));

print_r显示

阵列

(
    [0] => Dproc\MainBundle\Entity\Courses Object
        (
            [Id:protected] => 1
            [courseTitle:protected] => 3ds Max и Vray
            [courseContent:protected] => 3ds max course is awesome!
            [courseCategory:protected] => 3ds-max
            [courseTeacher:protected] => Ваге Мурадян
            [coursePayment:protected] => payment..
            [courseSchedule:protected] => schedule..
            [courseDescription:protected] => description..
            [courseLink:protected] => 
        )

)

courseLink为空,但为什么?那我该如何在课堂上给它价值?

1 个答案:

答案 0 :(得分:1)

由于courseLink属性本身存储在您的数据库中,因此在您调用null方法之前,它将为getCouseLink()。这实际上是正确的行为。

只需将您从数据库中提取的$course对象传递给您的视图,然后按以下方式访问它:

{{ course.courseLink }}

Twig将调用getCourseLink()方法,它将返回正确的字符串/网址。