zoukankan      html  css  js  c++  java
  • Symfony2 通过命令行调用控制器

      由于系统需求,需要写一个无限循环的控制器,那么既然有一个无限循环的控制器,那么就需要有一个开关,不可能直接通过route来开启吧。当然要使用高级一点的方法啊。

    那就是使用控制台通过命令行(command line)来开启。

      有了这个想法,那么我们就要开始着手了。下面介绍我找到的两种方法

      方法1:

        phax-bundle,这个可以帮助我们通过command line 来请求controller或者web client

        step1:安装bundle

          composer require phax/phax-bundle

        step2:

          在compser.json中引用  

    {
        "require": {
            "phax/phax-bundle": "dev-master"
        }
    }

        step3:

          注册phax-bundle

    // app/AppKernel.php
    
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new PhaxCoreBundlePhaxCoreBundle(),
        );
    }

        step4:

          注册phax路由

    #app/routing.yml
    phax:
        resource: "@PhaxCoreBundle/Resources/config/routing.yml"

        (可选)step5:

           如果你要通过客户端ajax调用controller,就要在模板加上一下代码

    {# Phax integration #}
    {% javascripts
        '@PhaxCoreBundle/Resources/public/js/*'
    %}
        <script src="{{ asset_url }}" type="text/javascript"></script>
    {% endjavascripts %}
    <script type="text/javascript">
        var phaxConfig = {
            www_script: '{{ path('phax_script') }}'
        }
    </script>
    {# END Phax integration #}

        检查是否安装phax是否安装成功

    php app/console phax:action help

        phax安装完成以后,下面就是使用了。

        step1:

          创建一个phax controller

        

    php appconsole generate:bundle

          创建完成后

    <?php
    // AcmeCommentBundleControllerCommentAjaxController.php
    
    namespace AcmeCommentBundleController;
    
    use SymfonyBundleFrameworkBundleControllerController;
    use PhaxCoreBundleModelPhaxAction; // 记得应用这个
    
    class CommentAjaxController extends Controller
    {
        /**
         * Add a comment asynchronously
         */
        public function addAction(PhaxAction $phaxAction) {
        echo
    $msg = $phaxAction->get('msg', 'i'm message'); //后面设置的是默认值
      }
    }

        step2:把你的控制器注册成一个服务

    # src/Acme/CommentBundle/Resources/service.yml
    services:
        phax.comment:
            class: AcmeCommentBundleControllerCommentAjaxController
            calls:
                - [setContainer, ["@service_container"]]

        step3:通过命令行调用

    example:
    php app/console phax:action comment add -p msg:'hello world'
    #说明:php app/console phax:action controller action -p param1:value1 -p param2:value2
     

        输出的内容是:hello world;

      方法2:不用安装bundle,就是自己写一个类,然后应用

    参考资料

        

          

  • 相关阅读:
    典型页面布局
    网站表单输入框去除浏览器默认样式
    时间格式问题
    经典算法
    css自动换行
    git pull报“unable to update local ref”解决方案
    MYSQL数据插入和更新的语法
    正则表达式去除连续重复的字符
    linux保存住github的账号和密码
    php动态获取常量
  • 原文地址:https://www.cnblogs.com/EvanHe/p/5242885.html
Copyright © 2011-2022 走看看