저는 이전 웹 사이트 코드를 새로운 Symfony2.6에 "이식"합니다. 컨트롤러를 사용하여 양식을 렌더링하고 블로그에서 게시물을 만듭니다. 그런 다음 유효하면 두 번째 컨트롤러에 제출됩니다 (POST 메서드). 컨트롤러를 초기화하기 위해 라우트를 호출 할 때 무시할 수있는 이유가 있지만 ShowAction ($ slug)을 호출하기도합니다. 포스트가 생성되지 않았기 때문에 실패하기 때문에 $ slug 매개 변수가 없습니다. 왜이 쇼 액션을 부르는거야? 그럼에도 불구하고 양식을 표시하는 url을 입력했습니다. 나는 ShowAction를 호출하지 않으Symfony2 포스트 콜을 만들기 ShowAction
1. in src/Blog/BlogBundle/Services/PostManager.php at line 80
2. at PostManager ->findBySlug ('create_post') in src/Blog/BlogBundle/Controller PostController.php at line 55
3. at PostController ->ShowAction ('create_post')
4. at call_user_func_array (array(object(PostController), 'ShowAction'), array('create_post')) in app/bootstrap.php.cache at line 3020
: 여기
는 실패를 시작하는 줄에서 오류 로그입니다. 여기 컨트롤러 코드 :/**
* Show a Post
*
* @param string $slug
*
* @throws NotFoundHttpException
* @return array
*
* @Route("/{slug}")
* @Template()
*/
public function ShowAction($slug)
{
$post = $this->getPostManager()->findBySlug($slug);
$form_comment = $this->createForm(new CommentType());
return array(
'post' => $post,
'form_comment' => $form_comment->createView()
);
}
/**
* Displays a form to create a new Post entity.
*
* @Route("/new_post", name="_blog_backend_post_new")
* @Template()
*/
public function newAction()
{
$form = $this->createForm(new PostType(), new PostModel(new Post()));
return array(
'form' => $form->createView(),
);
}
/**
* Creates a new Post entity.
*
* @Route("/create_post", name="_blog_backend_post_create")
* @Method("POST")
* @Template("BlogBundle:Backend/Post:new.html.twig")
*/
public function createAction()
{
$request = $this->getRequest();
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(new PostType(), new PostModel(new Post()));
$formHandler = new PostHandler($form, $request, new Post(), $em);
if ($formHandler->process()) {
return $this->redirect($this->generateUrl('_blog_backend_post'));
}
return array(
'form' => $form->createView(),
);
}
는 필요한 경우 나도 몰라하지만 여기에 관련 템플릿입니다
* @Template ("BlogBundle : 백엔드/우편 : new.html.twig") :
{% extends "::base.html.twig" %}
{% block content %}
<form class="well" action="{{ url('_blog_backend_post_create') }}" method="post" {{ form_enctype(form) }}>
{% include 'BlogBundle:Backend/Post:edit.form.html.twig' with {'form': form } %}
</form>
{% endblock %}
BlogBundle : 백엔드/우편 : edit.form.html.twig :
{% if form_errors(form) %}
<div class="alert alert-block alert-error fade in form-errors">
{{ form_errors(form) }}
</div>
{% endif %}
<p>
<label for="">Title</label>
{% if form_errors(form.title) %}
<div class="alert alert-block alert-error fade in form-errors">
{{ form_errors(form.title) }}
</div>
{% endif %}
{{ form_widget(form.title, { 'attr': {'class': 'w100'} }) }}
</p>
<p>
<label for="">Body</label>
{% if form_errors(form.body) %}
<div class="alert alert-block alert-error fade in form-errors">
{{ form_errors(form.body) }}
</div>
{% endif %}
{{ form_widget(form.body, { 'attr': {'class': 'w100'} }) }}
</p>
<p>
<button class="btn" type="submit">Save</button>
<a class="btn" href="{{ url('_blog_backend_post') }}">Cancel</a>
</p>
{{ form_rest(form) }}
내가 누락 된 부분과 어떻게 해결할 수 있습니까? 미리 감사드립니다.
헥타르 제출 한 후 그것을 과장하십시오? –
나는 그것을 향상시키고 싶고 오래된 것들은이 경우에 유용하지 않다. 그러나 지금 사용하고있는 것들은 매우 똑같습니다. 그래서 생각하는 문제는 newAction뿐 아니라 showAction을 먼저 호출하는 컨트롤러 내입니다. – Garces
새 작업 및 편집 작업을 모두 처리하는 단일 경로를 만듭니다. "$ slug"가 null 인 경우 새 객체를 만듭니다. 그렇지 않으면 현재 객체를 업데이트합니다. –