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 ...
随机推荐
- Android常见控件— — —Button
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=&qu ...
- UE4 - C++ 射线捕捉
#include "Runtime/Engine/Classes/Kismet/KismetMathLibrary.h" //省略大部分代码 void AMyFPS_Charact ...
- rpm软件包管理
RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证. 下面我们就来逐一的讲解吧. 一. 安装RPM包 RPM 软件包通常具有类似foo-1.0-1.i386.rp ...
- 数组第K小数问题 及其对于 快排和堆排 的相关优化比较
题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...
- HDU 5876 (大连网赛1009)(BFS + set)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意:给定一个图(n个顶点m条边),求其补图最短路 思路:集合a表示当前还未寻找到的点,集合b表 ...
- 从零开始学习Node.js例子一 http get和post
httpserverrequestget.js /* 获取GET请求内容 由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数 ...
- Magento文件系统目录结构
magento │ .htaccess│ cron.php //系统cron程序,修改 linux的cron运行,加入magento的一些定时处理│ cron.sh│ favicon.ico ...
- B - 搬寝室
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pract ...
- 摘要评注The Cathedral & The Bazaar
2013年暑期买到这本书,距离其第一版已经有14年之久,而最早发布在互联网上的文章更是早在1997年.在我阅读的时候,很多事迹已经沉积为历史,很多预言已经成为现实.而这本书的意义却丝毫没有因此淡化,反 ...
- C# 反射遍历对象
在项目中需要遍历各种对象,可以通过如下方法遍历. /// <summary> /// 返回对象字符串 /// </summary> /// <param name=&qu ...