php - Symfony2 : Add method to an Entity

标签 php symfony entity addition

我想向实体添加一个方法。 此方法从实体的标题中返回 X 个字符,我想在我的 Twig 文件中打印此标题。 这可能吗?

Twig :

<ul class="nav nav-pills nav-stacked">
{% for blog in listBlogs %}
    <li>
        <a href="{{ path('l3_blog_view', {'id': blog.id}) }}">
            {{ blog.getTruncatedTitle }}
        </a>
    </li>
{% endfor %}

实体:

class Blog
{
 /**
 * @var string
 *
 * @ORM\Column(name="content", type="text")
 */
private $content;

public function setTruncatedTitle($content)
{
    $this->content = "Hey";

    return $this;
}

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

}

最佳答案

查看您的代码,您用简单的字符串替换内容。但在模板文件中,您根本不调用该方法,而是直接访问 getter。另外,X 个字符 是什么意思?如果你想截断你的标题并返回其中的一部分,Symfony 正在为此提供一个非常方便的过滤器。您所要做的就是注册该服务:

services:
twig.extension.text:
    class: Twig_Extensions_Extension_Text
    tags:
        - { name: twig.extension }

之后就像{{ blog.content |截断(50)}}。如果你想保留你的文字,请包含它的第二个参数,就像这样 |截断(50,真)。如果您想要自定义分隔符,请将其作为 3rd 参数包含在内。

如果我没有正确理解您的问题,请告诉我。

- 更新 -

如果您想要的只是定义自定义方法来对您的属性执行一些特定的逻辑,那么可以这样做:

public function getTruncatedTitle() {
    $title = $this->title; // or $this->content - whatever suits your needs.

    // You can apply your custom logic here like that.
    return substr($title, 0, 10);
}

然后调用 blog.truncatedTitle 将调用该方法。

关于php - Symfony2 : Add method to an Entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858108/

相关文章:

生产代码中的 PHP debug_backtrace 获取有关调用方法的信息?

php - 如何在 Laravel 中使用相同的 Blade 模板对一个 Controller 进行添加和编辑操作?

symfony - Capifony:更新供应商和 deps 文件

java - 在 Objectify 中计算实体的排名

mysql - 尝试保存用户时,列 'role_id' 不能为空。 Spring , hibernate ,SQL

javascript - 使用 php 导出 mysql 被 javascript 阻止

php - 如何使 PHP 脚本从终端值同步更新

forms - 以批量形式使用 Pagerfanta/非 ArrayAccess 列表

php - Symfony2 - 使用第三方库 (SSRS)

java - 异常.getmessage() 返回 null