Php 使用相同的视图编辑和查看symfony

Php 使用相同的视图编辑和查看symfony,php,rest,symfony,Php,Rest,Symfony,我想使用相同的视图进行编辑和查看。不幸的是,我无法编辑我的视图。在symfony3中,我认为没有办法索引表单。我尝试了我能做的每件事,但我不知道如何使用相同的表格。在我的项目中,我还使用JEE(直接链接到数据库)使用UnirestAPI与symfony通信。以下是我的查看和编辑控制器: /** * @Method({"GET"}) */ public function viewAction($id) { $phone = new Phone(); $form = $this-

我想使用相同的视图进行编辑和查看。不幸的是,我无法编辑我的视图。在symfony3中,我认为没有办法索引表单。我尝试了我能做的每件事,但我不知道如何使用相同的表格。在我的项目中,我还使用JEE(直接链接到数据库)使用UnirestAPI与symfony通信。以下是我的查看和编辑控制器:

  /**
 * @Method({"GET"})
 */
  public function viewAction($id) {
  $phone = new Phone();
  $form = $this->createForm(PhoneType::class, $phone);
  $headers = array('Accept' => 'application/json');
  $response = Unirest\Request::get(link/phones/'.$id,$headers);
  //$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
  return $this->render('AppBundle:Phone:PhoneView.html.twig', array (
      'form' => $form->createView(),
      'phone' => $response->body,
             ) );
     }


  /**
* @Method({"PUT"})
*/
public function updateAction(Request $request, $id) {

  $phone = new Phone();
  $form = $this->createForm(PhoneType::class, $phone);
  dump($request->getMethod());
    if ($request->isMethod('PUT')) {
    $form->handleRequest($request);
    $headers = array('Content-Type' => 'application/json');
    $data = json_encode($phone);
    $response = Unirest\Request::put('link/phones/'.$id,$headers,$data);
    //$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
    dump($response->code);
    return $this->redirect($this->generateUrl('phones_list'));
  }
  $headers = array('Accept' => 'application/json');
  $response = Unirest\Request::get('link/phones/'.$id,$headers);
  //$this->assertEquals(Response::HTTP_OK, $response->getStatusCode());
  dump($response->code);
  dump($response->body);
   return $this->render('AppBundle:Phone:PhoneUpdate.html.twig',    array(
     'form'=> $form->createView(),
     'phone'=> $response->body,
   ));
这是我的文件PhoneView.html.twig

{% extends "::base.html.twig" %}

{% block title %}Accedant - {{ parent() }}{% endblock %}

{% block body %}
<form novalidate="novalidate" method = "get">
 <p>
 <label> color </label> :<input type="text" value= {{ phone.color }} />          
 <label> price </label> :<input type="text" value= {{ phone.price }} /> 
    <div class="form-group col-md-offset-5">
      <button type="submit" class="btn btn-default">Save</button>
    </div>
  </p>
 </form>

{# Updating Phone #}
<p class="left-center">
    <a href="{{ path('phones_update', {'id': phone.id}) }}" class="btn btn-mini btn-danger" class="btn btn-mini btn-danger">
        Modify phone
     </a>
  </p>
{% endblock %}
{% extends "::base.html.twig" %}

{% block title %} Phone - {{ parent() }}{% endblock %}

{% block body %}
<div class="container">

{{ form_start(form, {'method': 'PUT'}) }}
<input type="hidden" name'_METHOD' value="PUT">
{{ form_widget(form) }}
  <input type="submit" value="Sauvegarder" class="btn btn-default" />
{{ form_end(form) }}


</div>

{% endblock %}

谢谢您的帮助。

首先,我的放置删除方法未配置。此外,我的问题是我认为路由文件routing.yml中的put方法与我的web服务无关。因此,我更改了路径以编辑表单/update/{id},然后我得到了一个404错误,这是由于我在J2EE端的实现造成的

首先,我的putdelete方法没有配置。此外,我的问题是我认为路由文件routing.yml中的put方法与我的web服务无关。因此,我更改了路径以编辑表单/update/{id},然后我得到了一个404错误,这是由于我在J2EE端的实现造成的

“索引表单”是什么意思?您的意思是希望多次呈现同一表单,但在操作中需要其他信息吗?这样做肯定有几个选择。一种是向调用处理表单的操作(ig/phone/{id}/create)的路由添加一个变量,然后更改使用正确id呈现的每个表单的操作属性。另一种选择是在表单中使用隐藏字段。我的意思是,我要为表单提供索引,这样我就可以使用相同的表单进行查看和编辑。事实上,我可以创建一个表单,我可以列出我的手机,我也可以查看它们,但问题是我无法编辑它们,你能告诉我其他选项的详细信息吗(请在表单中使用隐藏字段)?要编辑表单,您需要使用现有数据预先填充表单,然后继续解决向表单中添加空字段的问题,以便用户也可以添加内容。因此,与其创建新的phone对象,不如使用现有的相关对象。这正是问题所在,我不知道如何在我的表单中引用它们,如何使用已创建的表单,这就是为什么我说我需要索引它们,以便在我的PhoneUpdate.Twig.html中为它们创建一个引用。你能为我写一个文件phoneUpdateWig.html(我的问题在这里)吗?我认为控制器很好。在
updateAction()
中,你正在传递新的
Phone
对象以形成你的代码
$Phone=new Phone();   $form=$this->createForm(PhoneType::class,$phone)
因此,通过传递新的
Phone()
对象,通过
$id
$Phone=$phoneRepository->find($id)找到所需的对象$form=$this->createForm(PhoneType::class,$phone)你说的“索引表单”是什么意思?您的意思是希望多次呈现同一表单,但在操作中需要其他信息吗?这样做肯定有几个选择。一种是向调用处理表单的操作(ig/phone/{id}/create)的路由添加一个变量,然后更改使用正确id呈现的每个表单的操作属性。另一种选择是在表单中使用隐藏字段。我的意思是,我要为表单提供索引,这样我就可以使用相同的表单进行查看和编辑。事实上,我可以创建一个表单,我可以列出我的手机,我也可以查看它们,但问题是我无法编辑它们,你能告诉我其他选项的详细信息吗(请在表单中使用隐藏字段)?要编辑表单,您需要使用现有数据预先填充表单,然后继续解决向表单中添加空字段的问题,以便用户也可以添加内容。因此,与其创建新的phone对象,不如使用现有的相关对象。这正是问题所在,我不知道如何在我的表单中引用它们,如何使用已创建的表单,这就是为什么我说我需要索引它们,以便在我的PhoneUpdate.Twig.html中为它们创建一个引用。你能为我写一个文件phoneUpdateWig.html(我的问题在这里)吗?我认为控制器很好。在
updateAction()
中,你正在传递新的
Phone
对象以形成你的代码
$Phone=new Phone();   $form=$this->createForm(PhoneType::class,$phone)
因此,通过传递新的
Phone()
对象,通过
$id
$Phone=$phoneRepository->find($id)找到所需的对象$form=$this->createForm(PhoneType::class,$phone)
phones_view:
path:     /phones/{id}
defaults: { _controller: AppBundle:Phone:view }
methods:  [GET]
requirements:
    id:  \d+


phones_update:
 path:     /phones/{id}
 methods:  [PUT]
 defaults: { _controller: AppBundle:Phone:update }

 requirements:
     id:  \d+