无法自动装配参数 $of "App\Controller\HomeController":它引用 class "Symfony\Component\Form\SubmitButton" 但不存在此类服务
Cannot autowire argument $of "App\Controller\HomeController": it references class "Symfony\Component\Form\SubmitButton" but no such service exists
这里是 symfony 菜鸟。
我不确定这个自动装配错误是关于什么的。
我正在尝试检查按钮是否被点击(也许有更好的方法)
像这样(先看if)
if ($button->get('submit')) {
$parameters = [];
$clientId = $request->get('client_id');
$clientSecret = $request->get('client_secret');
$playlistId = $request->get('playlist_id');
if ($clientId && $clientSecret && $playlistId) {
$parameters['client_id'] = $playlistId;
$parameters['client_secret'] = $clientSecret;
$parameters['playlist_id'] = $playlistId;
}
Validator::validateArrayKeys($parameters);
}
这是我的全部 class,我在这里引用的内容有误吗?
或者是否有其他方法来检查是否已提交表单(我没有数据库)
/**
* @Route("/", name="app_index")
*/
public function index(Request $request, SubmitButton $button)
{
$this->getParameters($request, $button);
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
]);
}
public function getParameters(Request $request, SubmitButton $button)
{
$submitButton = $button->get('submit');
dd($submitButton);
if ($button->get('submit')) {
$parameters = [];
$clientId = $request->get('client_id');
$clientSecret = $request->get('client_secret');
$playlistId = $request->get('playlist_id');
if ($clientId && $clientSecret && $playlistId) {
$parameters['client_id'] = $playlistId;
$parameters['client_secret'] = $clientSecret;
$parameters['playlist_id'] = $playlistId;
}
Validator::validateArrayKeys($parameters);
}
}
问题出在这里:
public function index(Request $request, SubmitButton $button)
Symfony 无法推断出 $button
是什么。如果你有相应的表单那么你应该实例化那个表单,处理请求然后你可以检查按钮是否被点击,大致是这样的:
public function index(Request $request)
{
$form = $this->createForm(MyFormType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($form->get('submit')->isClicked()) {
// ...
} else {
// ...
}
}
return $this->render('my_template.html.twig', ['form' => $form->createView()]);
}
可以理解,如果您想做的只是检查按钮是否被单击,并且您不想围绕它构建整个表单,那么这有点过分了。为此,您只需从请求中访问提交的数据,而无需求助于任何形式 class whatsover:
public function index(Request $request)
{
$isClicked = $request->request->get('submit');
// ...
}
如果您使用 GET 方法提交值,则可以 $request->query
而不是 $request->request
,而不是 post。
另请参阅:
这里是 symfony 菜鸟。
我不确定这个自动装配错误是关于什么的。
我正在尝试检查按钮是否被点击(也许有更好的方法)
像这样(先看if)
if ($button->get('submit')) {
$parameters = [];
$clientId = $request->get('client_id');
$clientSecret = $request->get('client_secret');
$playlistId = $request->get('playlist_id');
if ($clientId && $clientSecret && $playlistId) {
$parameters['client_id'] = $playlistId;
$parameters['client_secret'] = $clientSecret;
$parameters['playlist_id'] = $playlistId;
}
Validator::validateArrayKeys($parameters);
}
这是我的全部 class,我在这里引用的内容有误吗? 或者是否有其他方法来检查是否已提交表单(我没有数据库)
/**
* @Route("/", name="app_index")
*/
public function index(Request $request, SubmitButton $button)
{
$this->getParameters($request, $button);
return $this->render('home/index.html.twig', [
'controller_name' => 'HomeController',
]);
}
public function getParameters(Request $request, SubmitButton $button)
{
$submitButton = $button->get('submit');
dd($submitButton);
if ($button->get('submit')) {
$parameters = [];
$clientId = $request->get('client_id');
$clientSecret = $request->get('client_secret');
$playlistId = $request->get('playlist_id');
if ($clientId && $clientSecret && $playlistId) {
$parameters['client_id'] = $playlistId;
$parameters['client_secret'] = $clientSecret;
$parameters['playlist_id'] = $playlistId;
}
Validator::validateArrayKeys($parameters);
}
}
问题出在这里:
public function index(Request $request, SubmitButton $button)
Symfony 无法推断出 $button
是什么。如果你有相应的表单那么你应该实例化那个表单,处理请求然后你可以检查按钮是否被点击,大致是这样的:
public function index(Request $request)
{
$form = $this->createForm(MyFormType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
if ($form->get('submit')->isClicked()) {
// ...
} else {
// ...
}
}
return $this->render('my_template.html.twig', ['form' => $form->createView()]);
}
可以理解,如果您想做的只是检查按钮是否被单击,并且您不想围绕它构建整个表单,那么这有点过分了。为此,您只需从请求中访问提交的数据,而无需求助于任何形式 class whatsover:
public function index(Request $request)
{
$isClicked = $request->request->get('submit');
// ...
}
如果您使用 GET 方法提交值,则可以 $request->query
而不是 $request->request
,而不是 post。
另请参阅: