Ajaxでコントローラー内の関数を呼び出そうとしているのですが、稼働しません。
エラーメッセージなどは出ておらず、ajax接続も成功しています。
何が原因かわからずお手上げ状態です。
どなたかご教授いただけますと幸いです。
コントローラー
<?php
namespace Plugin\PushNotifyOrder\Controller\Admin;
use Eccube\Controller\AbstractController;
use Eccube\Repository\OrderRepository;
use Eccube\Entity\ItemHolderInterface;
use Eccube\Entity\Master\OrderStatus;
use Eccube\Entity\Order;
use Eccube\Repository\Master\OrderStatusRepository;
use Eccube\Service\PurchaseFlow\PurchaseContext;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Psr\Log\LoggerInterface;
class NewOrderStatusController extends AbstractController
{
/**
* @var OrderStatusRepository
*/
private $orderStatusRepository;
/**
* @var OrderRepository
*/
private $orderRepository;
private $logger;
/**
* NewOrderStatusController constructor.
*
* @param OrderStatusRepository $orderStatusRepository
* @param OrderRepository $orderRepository
*/
public function __construct(OrderStatusRepository $orderStatusRepository,OrderRepository $orderRepository, LoggerInterface $logger)
{
$this->orderStatusRepository = $orderStatusRepository;
$this->orderRepository = $orderRepository;
$this->logger = $logger;
}
/**
* @Route("/%eccube_admin_route%/", name="change_order_status", methods={"POST"})
* @param $request
* @return \Symfony\Component\HttpFoundation\JsonResponse
*/
public function changeOrderStatus(Request $request)
{
if (!$request->isXmlHttpRequest()) {
throw new BadRequestHttpException();
}
$this->logger->info("it's working");
$id = $request->query->get('id');
$Order = $this->orderRepository->find($id);
$OrderStatus = $this->orderStatusRepository->find(OrderStatus::IN_PROGRESS);
$Order->setOrderStatus($OrderStatus);
$Order->setOrderDate(new \DateTime());
$em = $this->getEntityManager();
$em->persist($Order);
$em->flush();
return $this->json([
'success' => true
]);
}
}
JS
$("[id^=changeStatus]").each(function(){
$(this).on("click", function(){
const id = $(this).data('id');
console.log(id);
$.ajax({
type: "POST",
url: "{{url('change_order_status')}}",
data: { id : id
},
async: false,
})
.done(function(data){
console.log(data)
console.log('success');
})
.fail(function () {
console.log('error');
});
});
});
ajaxの戻り値は管理画面(/%eccube_admin_route%/)のhtml情報が返ってきます。