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 Phax\CoreBundle\PhaxCoreBundle(),
);
}
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 app\console generate:bundle
创建完成后
<?php
// Acme\CommentBundle\Controller\CommentAjaxController.php namespace Acme\CommentBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Phax\CoreBundle\Model\PhaxAction; // 记得应用这个 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: Acme\CommentBundle\Controller\CommentAjaxController
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,就是自己写一个类,然后应用
Symfony2 通过命令行调用控制器的更多相关文章
- Maven-11: 从命令行调用插件
mvn -h显示mvn命令帮助: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make ...
- 命令行调用dubbo远程服务
命令行调用dubbo远程服务 telnet远程连接到dubbo telnet 127.0.0.1 20880 查看提供服务的接口 dubbo>ls com.test.service.TestIn ...
- Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参
Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...
- VB6 实现命令行调用时附着到原控制台
Public Declare Function AttachConsole Lib "kernel32.dll" (ByVal ProcessID As Integer) As B ...
- blockdev - 从命令行调用区块设备控制程序
总览(SYNOPSIS) blockdev [options] commands devices 描述(DESCRIPTION) blockdev 工具允许从命令行调用区块设备控制程序. 选项(OPT ...
- Shodan搜索引擎详解及Python命令行调用
shodan常用信息搜索命令 shodan配置命令 shodan init T1N3uP0Lyeq5w0wxxxxxxxxxxxxxxx //API设置 shodan信息收集 shodan myip ...
- Laravel 5.2控制器--为什么命令行创建控制器的时候会报错?
今天我遇到过一种情况:就是之前创建的控制器名称想更改(仅仅只是大小写问题而已),然后用命令行重新创建新的名称的控制器. 结果就报错了? [ReflectionException] Class App\ ...
- WebService远程调用(命令行调用)
远程调用webservice 方法, 通过wsdl命令,生成webservice 对应asmx 文件的对应类(cs文件),然后将此cs文件引用到当前项目中,项目其他地方需要调用webservice方法 ...
- 在git bash中使用命令行调用tortoisegit提交代码或查看日志
Tortoisegit commit / show log命令行 TortoiseGitProc.exe /command:commit TortoiseGitProc.exe /command:lo ...
随机推荐
- 简单json语句转化为map保存
主要用到了 net.sf.json.JSONObject类 需要用到的jar包 : jar包下载地址 package test; import java.io.BufferedReader; impo ...
- apply()和call()和bind()
1.方法定义 call, apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function ...
- php之无限极分类
首先建立分类信息表: CREATE TABLE IF NOT EXISTS `category` ( `categoryId` smallint(5) unsigned NOT NULL AUTO_I ...
- Polymer.js
Polymer 1.0 教程 安装 bower install --save Polymer/polymer
- unity中全屏背景图缩放
using UnityEngine; using System.Collections; public class BgPicScript : MonoBehaviour { // Use this ...
- iOS 常用设计模式和机制之KVO
KVO http://blog.kyleduo.com/2014/10/20/ios_learning-kvo/ 定义: KVO:Key-Value Observing,是Foundation框架提供 ...
- spl_autoload_register更改框架文件引用模式
今天单点登陆要用到 spl_autoload_register,但是YII的Yii::autoload在包含失败的时候会抛异常,就不会执行(spl_autoload_call)其他spl_autolo ...
- kafka2.9.2的伪分布式集群安装和demo(java api)测试
目录: 一.什么是kafka? 二.kafka的官方网站在哪里? 三.在哪里下载?需要哪些组件的支持? 四.如何安装? 五.FAQ 六.扩展阅读 一.什么是kafka? kafka是LinkedI ...
- 【C】 03 - 数据类型
程序说到底就是对数据的处理,所以首先要弄清楚需要处理哪些数据,计算机如何存储这些数据.C语言根据需要,抽象出了一些基本数据类型和衍生数据类型.这些可以满足大部分需求,更复杂的抽象数据类型亦可通过它们来 ...
- .NET软件工程师面试总结
1.手写画出系统架构图,系统代码架构,有什么技术难点? 2.手写画出系统部署图 CDN(一般购买别人的服务器会自动CDN,他们自己配置就OK啦) 3.asp.net 的session怎么实现会话共享 ...