ValidatorInterface를 사용하여 컨트롤러에서 ajax로 제출된 양식의 유효성을 검사하려고 합니다.
그러나이 오류가 발생합니다.
"App\SocialStudio\AdminBundle\Controller\InfluencersController::addinfluencerajax()"의 인수 $validator를 해결할 수 없습니다. 컨트롤러를 서비스로 등록하는 것을 잊었거나 "controller.service_arguments"로 태그를 지정하지 못했습니까?
이것은 내 컨트롤러입니다.
<?php
namespace App\SocialStudio\AdminBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use App\Entity\Influencer;
use App\Form\Type\InfluencerType;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class InfluencersController extends AbstractController
{
public function Influencers(Request $request)
{
// Get all Inlfuencers
$influencers = $this->getDoctrine()
->getRepository(Influencer::class)
->findAll();
// create modal form
$influencer = new Influencer();
$addInfluencerForm = $this->createForm(InfluencerType::class, $influencer);
return $this->render('@Admin/influencers.html.twig', [
'menu' => 'influencers',
'influencers' => $influencers,
'addInfluencerForm' => $addInfluencerForm->createView(),
]);
}
public function addInfluencerAjax(Request $request, ValidatorInterface $validator)
{
... form handling happens in this function ...
}
}
이것은 ajax 호출에 대한 내 코드입니다.
$('#submitAddInfluencerForm').click(function(e){
e.preventDefault();
addInfluencerForm = $('#addInfluencerForm').serialize();
$.ajax({
url:'{{ path('AddInfluencerAjax') }}',
type: "GET",
dataType: "json",
data: {
"influencer": addInfluencerForm
},
async: true,
success: function (return_data)
{
...
}
});
});
서비스.yaml
services:
_defaults:
autowire: true
autoconfigure: true
App\:
resource: '../src/*'
exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
App\Controller\:
resource: '../src/Controller'
tags: ['controller.service_arguments']
그리고 이것을 내 framework.yaml에 넣었습니다.
framework:
validation: { enable_annotations: true }
`
Leprechaun의 도움으로 작동하는 방법을 찾았습니다.
컨트롤러 클래스에 추가:
private $validator;
public function __construct(
ValidatorInterface $validator
) {
$this->validator = $validator;
}
다음과 같이 함수에서 유효성 검사기를 가져옵니다.
$validator = $this->validator;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다