У меня есть следующие модели:Как получить доступ к модели в представлении - Symfony 2
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));
К сожалению, мой опыт изменения переменных простирается далеко за пределы этого. Я вызвал некоторый массив («people» => $ people). И еще один коллега сделал это с массивом («users» => $ peopleRepository). Когда дело дошло до третьего коллеги, он был совершенно смущен в течение двух недель, которые я проводил в отпуске, потому что эта переменная отличалась по виду (была ли какая-то отдельная модель, которую он отсутствовал?) (Это произошло во всей заявке). В C# .NET MVC (хотя у вас есть viewbag), все это доступ к @model в представлении и в меру своих возможностей, а не путаница! – Jimmyt1988
Это не технический вопрос, а вопрос вкуса и соглашения об именах. Обычно я предоставляю списки сущностей множественного имени моей сущности, поэтому, если у меня есть массив пользователей, я называю его массивом ('users' => $ anyVariable), так что по крайней мере в представлении доступ к списку пользователей всегда тоже самое. – m0c
@moc это вопрос программирования ... Я не знаю, как это сделать по-другому, что такое код. Я не забочусь о соглашениях об именах, я не спрашивал, было ли это лучше, я спросил, как это сделать. это полностью вопрос программирования. – Jimmyt1988