生成url在symfony2中不起作用

时间:2013-05-20 13:33:27

标签: symfony

非常感谢您一直帮助我。我在管理员登录时创建了一个登录表单,它显示了添加,删除,编辑选项的所有用户列表

我成功登录和显示用户列表的视图代码是这样的

<a href="<?php echo $view['router']->generate('deleteuser',array('id'=>$id,))?>">Delete</a>
<td><a href="<?php echo $view['router']->generate('edituser',array('id'=>$id))?>">Edit</a></td>

当管理员点击特定的删除选项时,它会在网址中生成特定用户的ID,例如url:deleteuser?id=6

对于此路由,我有一个带删除操作的控制器deleteuser,它再次创建一个视图,用于确认是否删除用户。即使我单击no按钮我的用户正在删除 我的deleteuser控制器是

class deleteuserController extends Controller
{
public function showAction(Request $request)
{
$request = $this->getRequest();

     $register = new users();

    $em = $this->getDoctrine()->getManager();

   $repository = $em->getRepository('RepairStoreBundle:users');

    $result = $repository->display();
  return $this->render('RepairLoginBundle:login:success.html.php',array('result'=>$result,)); 

}   
public function deleteAction(Request $request)
{

 $id= $_GET['id'];  
  $request = $this->getRequest();

     $register = new users();
    $em = $this->getDoctrine()->getManager();
   $repository = $em->getRepository('RepairStoreBundle:users');

if($request->getMethod() == 'POST')
{ 

 $register = $repository->find($id);

  $result = $repository->display();
  return $this->render('RepairLoginBundle:login:success.html.php',array('result'=>$result,));
}
 return $this->render('RepairLoginBundle:admin:deleteuser.html.php');
 }



}

我的routing.yml文件是

delete:

pattern:   /delete

defaults:  { _controller:RepairLoginBundle:deleteuser:show}

deleteuser:

pattern:   /deleteuser

defaults:  { _controller:RepairLoginBundle:deleteuser:delete}

这是我的delete.html.php

<div class="modal-footer">  
<a href="<?php echo $view['router']->generate('deleteuser')?>">

<input type="submit" name="Yes" class="btn btn-success" value=Yes /></a>

<a href="<?php echo $view['router']->generate('delete')?>"><input type="submit" name="No" class="btn" data-dismiss="modal" value="No"/></a>
</form>
</div> 

即使点击否之后它也没有生成删除路线,请告诉我哪里出错了

1 个答案:

答案 0 :(得分:0)

我看到你正在使用Twitter Bootstrap并且不清楚代码失败的地方,但你的HTML是错误的。

请改为尝试:

<div class="modal-footer">
  <a href="#" class="btn">Cancel</a>
  <a href="<?php echo $view['router']->generate('deleteuser', array('id' => $id); ?>" class="btn btn-primary">Delete user</a>
</div>

请参阅文档:http://twitter.github.io/bootstrap/javascript.html#modals

作为旁注,您的控制器和路线定义可以从阅读documentation中受益,它可能有效(是吗?)但它绝对不是最佳实践!

您的路由应如下所示:

deleteuser:
  path:      /deleteuser/{id}
  defaults:  { _controller:RepairLoginBundle:deleteuser:delete}

...和您的控制器功能定义:

public function deleteAction(Request $request, $id)

然后您不必在控制器中执行$ _GET,Symfony2会为您执行此操作。