尝试创建删除方法后,我遇到以下错误:
{% extends 'base.html.twig' %}
{% block body %}
{% if movies|length == 0 %}
There are no movie items available. Add a movie <a href="{{ path('movie_create_form') }}">here</a> to get started.
{% elseif movies|length != 0 %}
These are the results: <br />
<ul>
{% for x in movies %}
<li>Title: {{ x.title }} - Price: {{ x.price }} - <a href="#">Edit</a> - <a href="{{ path('movie_delete') }}{{ x.id }}"> Delete</a></li>
{% endfor %}
</ul>
<a href="{{ path('movie_create_form') }}">Add more movie entries</a>
{% endif %}
{% endblock %}
我正在使用的代码: 树枝模板:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use AppBundle\Entity\Movie;
class MovieDeleteController extends Controller
{
public function deleteAction($id)
{
$em = $this->getDoctrine()->getManager();
if(!$id)
{
throw $this->createNotFoundException('No ID found');
}
$movie = $this->getDoctrine()->getEntityManager()->getRepository('AppBundle:Movie')->Find($id);
if($movie != null)
{
$em->remove($movie);
$em->flush();
}
return $this->redirectToRoute('movies');
}
}
删除课程:
movie_delete:
path: /movies/delete/{id}
defaults: { _controller: AppBundle:MovieDelete:delete }
我的routing.yml:
{{1}}
任何人都可以解释一下我应该如何在Symfony中添加Delete方法,以便我可以在上面编写的代码中应用更改?
答案 0 :(得分:4)
您没有将ID传递给path()
函数。你应该做的是:
<a href="{{ path('movie_delete', {'id': x.id}) }}">Delete</a>
path()
函数使用Symfony路由,如果您忘记指定必需的属性,则会抛出异常。
答案 1 :(得分:3)
在您的树枝代码中,更改以下行:
<a href="{{ path('movie_delete') }}{{ x.id }}"> Delete</a>
致:
<a href="{{ path('movie_delete', { id: x.id }) }}"> Delete</a>
像这样,将使用x.id
作为id
参数生成路线。
答案 2 :(得分:3)
您已忘记通过该ID&#39;可变到树枝路线。
<a href="{{ path('movie_delete') }}{{ x.id }}"> Delete</a>
应该是
<a href="{{ path('movie_delete', {id: x.id}) }}"> Delete</a>
在你的电影中删除&#39;路线,你已经定义了一个&#39; id&#39;参数。创建此路由时需要此参数。将丢失的参数传递到twig文件中,然后就完成了!
如果您要开始编辑&#39;编辑&#39;路线也一样,请记住,你需要一个&#39; id&#39;参数也是如此。确保将其传递到您的树枝文件中,就像使用&#39;删除&#39;路由。
请参阅:This Symfony documentation,此处解释了树枝路由的其他参数。在你的情况下&#39; slug&#39;被&#39; id&#39;取代。
祝你好运!