2016-12-05 5 views
1

Symfony 3에서 SwiftMailer가 전자 메일을 보내려고합니다. 튜토리얼 http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email을 끝내고 "컨트롤러에서 양식 만들기"에서 문제가 발생했습니다. "클래스의"대해 GetRequest AppBundle \ 컨트롤러 \ DefaultController "라는 정의되지 않은 메서드를 호출하는 시도"SRC/AppBundle/DeffaultController 내 contactAction을()의클래스의 "getRequest"라는 정의되지 않은 메서드를 호출하려고 시도했습니다. SwiftMailer에서 Sendind 전자 메일

"."

/** 
* @Route("/contact"), name="cont") 
*/ 
public function contactAction() 
{ 

    $enquiry = new Enquiry(); 
    $form = $this->createForm(EnquiryType::class, $enquiry); 

    $request = $this->getRequest(); 
    if ($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 

     if ($form->isValid()) { 
      // Perform some action, such as sending an email 

      // Redirect - This is important to prevent users re-posting 
      // the form if they refresh the page 
      return $this->redirect($this->generateUrl('app_default_contact')); 
     } 
    } 


    return $this->render(':default:contact.html.twig', array(
     'form' => $form->createView() 
    )); 
} 

도움말하시기 바랍니다!

+0

당신이 파일 및 클래스 이름이 동일하고, 네임 스페이스가 올바르게 설정되어 있습니까? 그리고 클래스가 메소드에 대한 액세스를 제공하는 루트 컨트롤러를 확장합니까? – Psyco430404

답변

3

getRequestSymfony\Bundle\FrameworkBundle\Controller\Controller 기본 클래스의 메서드입니다. 버전 2.4부터 사용되지 않으며 3.0에서 제거되었습니다.

는 요청 클래스 인수 및 유형 - 힌트를로 추가 컨트롤러에 효율적으로 활용하려면 다음 작업을

use Symfony\Component\HttpFoundation\Request; 

public function contactAction(Request $request) 
{ 

    // ... 

문서 here합니다.

+0

정말 모르겠으니 코드에서 어떻게 변경해야하는지 말해 줄 수 있습니까? : – Aga95

+0

위의 코드를 읽지 않으셨습니까? – Federkun

+0

해당 라인을 변경하는 방법 $ request = $ this-> getRequest(); – Aga95

0

symfony-3 이후 버전에서 getRequest() 함수는 더 이상 사용되지 않으며 제거됩니다. Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller; 현재 (4.03) 버전에서 계속 사용되고 유지됩니다.

요청을 얻을 수 github.com/symfony/framework-bundle :

$request = $this->container->get('request_stack')->getCurrentRequest();