我使用的是Symfony2 2.6版 我想知道如何在选择列表中获取所选值的值。这是我的行动:
Activity
问题在于:
public function indexAction(Request $request)
{
// On récupère l'EntityManager
$em = $this->getDoctrine()->getManager();
// Pour récupérer une annonce unique : on utilise find()
$rep= $em->getRepository('PFEUserBundle:Employee');
$employees = $rep->findAll();
$form = $this->createFormBuilder($employees)
->add('employees', 'entity', array(
'class' => 'PFEUserBundle:Employee',
'property'=>'matricule',
'expanded' => false,
'multiple' => false,
))
->add('voir','submit')
->getForm();
if ($form->handleRequest($request)->isValid()) {
$mat=$request->request->get('employees');
$employee=$rep->findByMatricule($mat);
//=====> get the employee
$session = $request->getSession();
// stocke un attribut pour une réutilisation lors d'une future requête utilisateur
$session->set('emp', $employee);
return $this->redirect($this->generateUrl('pfe_employees_employee_view', array('id' => $employee->getId())));
}
return $this->render('PFEEmployeesBundle:Employee:index.html.twig', array(
'form' => $form->createView(),
));
}
选择一个选项并提交后会给我这个错误:
$mat=$request->request->get('employees');
$employee=$rep->findByMatricule($mat);
答案 0 :(得分:0)
我的猜测是<html>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8" src="js/jquery.tubular.1.0.js"></script>
<script type="text/javascript">
$(function() {
var options = {
videoId : '9JXVUP1hyxA',
start : 10
};
$('html').tubular(options);
});
</script>
</body>
</html>
包含ID,而findByMatricule方法只接受对象。所以你应该把它改成:
$request->get("employees")
或者更改findByMatricule方法,使其适用于id,但最好添加一个名为findByMatriculeId的方法
答案 1 :(得分:0)
你在请求中得到的是一个对象的id,它是表单对象,它将数据转换为对象(简短地说)从数据库(如果表单中的字段是实体类型或它是一个实体的集合所以
onRestoreInstanceState
返回一个id,让我们说1,
$request->request->get('employees')
将返回PFEUserBundle类的对象:Employee