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 要求编写稀疏矩阵A的转置矩阵的算法
    • ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
    • ¥15 C语言:数据子序列基础版
    • ¥20 powerbulider 导入excel文件,显示不完整
    • ¥15 用keil调试程序保证结果进行led相关闪烁
    • ¥15 paddle训练自己的数据loss降不下去
    • ¥20 用matlab的pdetool解决以下三个问题
    • ¥15 单个福来轮的平衡与侧向滑动是如何做到的?
    • ¥15 嵌入式Linux固件,能直接告诉我crc32校验的区域在哪不,内核的校验我已经找到了,uboot没有