2013-02-08 1 views
0

я прохожу Symfony2 начать руководство и мой вопрос:Должен ли я использовать то же имя переменной для моего шаблона Twig, что и у меня в моем контроллере?

У меня есть база данных с колонками: цена, описание, идентификатор, имя Затем в моем контроллере я принести эти столбцы и отображать их с помощью шаблона веточку. В мой контроллер я:

public function showAction($id) 
    { 
     $product = $this->getDoctrine() 
      ->getRepository('AcmeStoreBundle:Product') 
      ->find($id); 

     if (!$product) { 
      throw $this->createNotFoundException(
       'No product found for id '.$id 
      ); 
     } 

     $price = $product -> getPrice(); 
     $description = $product -> getDescription(); 
     return $this->render(
     'AcmeStoreBundle:Store:index.html.twig', 
     array('id' => $id, 'price' => $price, 'description' => $description) 
     ); 
    } 

Мой вопрос, могу ли я изменить $ цена, $ описание назвать это все, что еще ...? или я вынужден продолжать упоминать эти переменные, как они названы в базе данных?

в основном, я могу сделать:

$foo = $product -> getPrice(); 
$bar = $product -> getDescription(); 

А потом в моей визуализации функции сделать:

return $this->render(
     'AcmeStoreBundle:Store:index.html.twig', 
     array('uniquecode' => $id, 'cost' => $foo, 'message' => $bar) 
     ); 

Мой вопрос два раза: 1) я могу сделать это 2) это хороший практиковать это?

+0

Вы можете сделать это :) Хорошая практика, чтобы сохранить ваши код читаемый и понятный :) Если у вас есть переменная, которая сохраняет информацию о цене, не называйте ее '$ quantity';) –

+0

Ага, поэтому я могу это сделать, но не очень хорошая практика. –

ответ

4

Лучше:

return $this->render('AcmeStoreBundle:Store:index.html.twig', array(
     'product' => $product 
)); 

Доступ продукт атрибуты прутик, как этого

{{ product.description }} 

Используйте значимые имена для переменных. Имя переменной должно определить точное объяснение его содержания

Я нашел его здесь http://codebuild.blogspot.de/2012/02/15-best-practices-of-variable-method.html, но вы можете просто Google для переменной и метод именования

+3

+1 Я был просто написав тот же ответ ... возможно, разумно добавить, что '' product '=> $ product' может быть просто «другим_имя» => $ product', но тогда это не будет иметь никакого смысла. . Это действительно то, что исходный вопрос был – ManseUK

+0

Спасибо. Думаю, я придумал это, пройдя стартовое руководство, но, действительно, как сказал ManseUK. :) –

+0

Согласен. Вы всегда хотите использовать значащие имена переменных, и по этой причине вы обычно хотели бы, чтобы имена переменных были одинаковыми в шаблоне, как в контроллере. Хороший способ заставить себя в этой привычке использовать «компактный». Например, 'return compact ('product');' будет возвращать массив с ключевым продуктом (который будет использоваться в вашем шаблоне ветки) и значение $ product из вашего контроллера. – Mark

Смежные вопросы