1
我有一个实体“Page”,它拥有一个slu。。 我在控制器中得到这个slu to以呈现正确的内容。 我想对特定页面有不同的行为。 我发现的唯一解决方案是根据slu switch进行切换。 问题是,如果slu changes改变(SEO),我还需要在控制器中更改它。与控制器中的相同实体的不同动作
class Page extends BaseEntity
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Gedmo\Slug(fields={"frontname"})
* @ORM\Column(length=255, unique=true)
*/
private $slug;
//...
页面控制器:
class PageController extends Controller
{
public function showAction(Request $request)
{
$slug = $request->get('slug_page');
$page = $this->getDoctrine()->getRepository('AppBundle:Autre')->findOneBy(array('slug' => $slug));
if (!$page) {
throw $this->createNotFoundException('Page introuvable.');
}
switch($slug){
case 'notre-equipe':
return $this->render('@App/Frontend/equipe/list.html.twig');
// etc....
}
return $this->render('AppBundle::Frontend/page/index.html.twig', array(
'page' => $page,
));
}
}
是否有任何清洁的解决方案做到这一点? 我正在使用symfony 2.7。
感谢您的帮助。
您可以创建基于蛞蝓价值的路线,但那么你就需要更新路由文件时蛞蝓改变。同样的问题。您需要在某处映射slug值,如果值发生更改,则映射将需要更新。 – Cerad