【问题标题】:How to get access to the model in the view - Symfony 2如何访问视图中的模型 - Symfony 2
【发布时间】:2013-10-17 02:22:47
【问题描述】:

我有以下型号:

class Person
{
    public $name;
    function __Construct( $name )
    {
        $this->name = $name;
    }
}

我有以下控制器:

class NavigationController extends Controller
{
    public function indexAction()
    {
        $people = array(
            new Person("James"),
            new Person("Bob")
        );
        return $this->render('FrameworkBundle:Navigation:index.html.php', $people);
    }
}

如何访问视图中的模型数组。有没有办法直接访问模型或者我必须像这样分配一个属性:?

class NavigationController extends Controller
{
    public function indexAction()
    {
        $people = array(
            new Person("James"),
            new Person("Bob")
        );
        return $this->render('FrameworkBundle:Navigation:index.html.php', array( "model" => $people ) );
    }
}

查看:

<?php 
    foreach( $model as $person )
    {
       echo $person->title;
    }
?>

上面的问题是用户可以将其更改为

return $this->render( 'FrameworkBundle:Navigation:index.html.php', array( "marybloomingpoppin" => $people ) );

【问题讨论】:

    标签: php symfony domain-object


    【解决方案1】:

    使用您使用的示例视图,您已经有了正确的实现:

    class NavigationController extends Controller
    {
        public function indexAction()
        {
            $people = array(
                new Person("James"),
                new Person("Bob")
            );
            return $this->render('FrameworkBundle:Navigation:index.html.php', array( "model" => $people ) );
        }
    }
    

    您提到有人可能会更改控制器中的赋值,但如果有人仅在一个地方而不是全部更改变量的名称,您总是会遇到这种情况。所以我认为这不是问题。

    【讨论】:

    • 不幸的是,我改变变量的经验远不止于此。我调用了一些数组(“people”=> $people)。另一个同事用数组(“users”=> $peopleRepository)做了这个。当谈到第三位同事时,他对我休假的 2 周完全感到困惑,因为这个变量在视图中是不同的(他缺少一个单独的模型吗?)(这在整个应用程序中都发生过).. . 在 C#.NET MVC 中(尽管你有一个 viewbag),所有东西都可以通过视图中的@model 访问,并且尽其所能,而不是混淆!
    • 这不是一个技术问题,而是一个品味和命名约定的问题。我通常给实体列表我的实体的复数名称,所以如果我有一个用户数组,我称之为 array('users' => $whateverVariable) 以便至少在视图中访问用户列表总是一样的。
    • @moc 这是一个编程问题...我不知道该怎么做,代码是什么。我不关心命名约定,我没有问这是否是更好的方法,我问的是如何做到这一点。这完全是一个编程问题。
    • 那我很遗憾不明白这个问题。因为你已经提供了应该工作的代码。这就是我试图指出的。除此之外我不明白这个问题:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2018-06-24
    • 1970-01-01
    • 2012-10-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多