如何解决在Sylius的ResourceController中创建自定义操作
我有一个扩展了ResourceController
的自定义控制器,我正在尝试创建一个自定义动作public function redeemAction(Request $request): Response
namespace App\Controller;
use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
class OrderPointsController extends ResourceController
{
public function redeemAction(Request $request): Response {
}
}
这是我在sylius_shop.yaml中的路线
app_shop_account_redeem_points:
path: /account/points/redeem
methods: [POST]
defaults:
_controller: app.controller.order_points:redeemAction
还有resource.yaml:
sylius_resource:
resources:
app.order_points:
classes:
model: App\Entity\Order\OrderPoints
repository: App\Repository\OrderPointsRepository
通过POST访问路由时,出现此错误:
URI“ /帐户/积分/兑换”的控制器不可调用: 类上的预期方法“ redeemAction” “ Sylius \ Bundle \ ResourceBundle \ Controller \ ResourceController”,您是否 是“ createAction”,“ deleteAction”,“ indexAction”?
我知道资源控制器应该执行CRUD操作,但是某些核心Sylius文件也调用自定义操作:
sylius_shop_cart_summary:
path: /
methods: [GET]
defaults:
_controller: sylius.controller.order:summaryAction
_sylius:
template: "@SyliusShop/Cart/summary.html.twig"
form: Sylius\Bundle\OrderBundle\Form\Type\CartType
。
namespace Sylius\Bundle\OrderBundle\Controller;
class OrderController extends ResourceController
{
public function summaryAction(Request $request): Response
{
$configuration = $this->requestConfigurationFactory->create($this->Metadata,$request);
$cart = $this->getCurrentCart();
if (null !== $cart->getId()) {
$cart = $this->getorderRepository()->findCartById($cart->getId());
}
if (!$configuration->isHtmlRequest()) {
return $this->viewHandler->handle($configuration,View::create($cart));
}
$form = $this->resourceFormFactory->create($configuration,$cart);
$view = View::create()
->setTemplate($configuration->getTemplate('summary.html'))
->setData([
'cart' => $cart,'form' => $form->createView(),])
;
return $this->viewHandler->handle($configuration,$view);
}
...
}
在扩展资源控制器的自定义控制器中,是否有一种方法可以调用除预定义的CRUD操作以外的其他操作?
解决方法
我在resource.yaml中缺少控制器:
sylius_resource:
resources:
app.order_points:
classes:
model: App\Entity\Order\OrderPoints
repository: App\Repository\OrderPointsRepository
controller: App\Controller\OrderPointsController
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。