douqiang1851 2016-10-10 08:53
浏览 114
已采纳

Symfony2:调用另一个控制器的函数

The directory structure is

AppBundle/api/CartController

There is a function defined in CartController.php as onlinecoupontrancation($params).

I need to call this function from AppBundle/api/MerchantController.php. I tried

$this->forward('AppBundle:api/Cart:onlinecoupontrancation', $param);

But it is giving error 404. Any clue for this? Thanks in advance.

  • 写回答

1条回答 默认 最新

  • douweilaton2762 2016-10-10 09:09
    关注

    If it is a shared function between two controllers, why not create a shared service class that both controllers use?

    For example, CartFunctions.php

    <?php
    // src/AppBundle/Classes/CartFunctions.php
    namespace AppBundle\Classes\CartFunctions;
    
    class CartFunctions
    {
    
        public function __construct()
        {
            // optional DI of other things if required
        }
    
        private function onlinecoupontrancation($params)
        {
            $foo = true;
            // whatever you want to do
    
            return $foo;
        }
    }
    

    Create this as a service, instructions here Something like;

    app/config/services.yml

    services:
        cart.functions:
            class:        AppBundle\CartFunctions
            arguments:    []
    

    So in your controllers;

    public function cartAction($params)
    {
        // other stuff ...
        $cartFunctions = $this->get('cart.functions');
        $foo = $cartFunctions->onlinecoupontrancation($params);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据