对话框的助手
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.3(当前的稳定版本)。
对话框的助手
的DialogHelper提供功能要求用户的更多信息。它包含在默认辅助设置,您可以通过调用getHelperSet ():
1
美元对话框=美元这- >getHelperSet ()- >get (“对话框”);
对话框内的所有方法辅助有
OutputInterface作为第一个参数,问题作为第二个参数,默认值作为最后一个参数。
要求用户确认
假设你想确认操作之前执行它。添加
下面的命令:
1 2 3 4 5 6 7 8
/ /……如果(!美元对话框- >askConfirmation (美元输出,' <问题>继续这个行动? > < /问题的,假)){返回;}
在这种情况下,用户将被要求“继续这个行动”,并将返回真正的
如果用户的答案y
在任何其他情况下或假。第三个
参数askConfirmation
是返回的默认值如果用户不
输入任何输入。
要求用户信息
你也可以问问题超过一个简单的是或否的答案。例如,如果你想知道一个包的名字,你可以将它添加到你的命令:
1 2 3 4 5 6
/ /……美元包=美元对话框- >问(美元输出,“请输入包名称”,“AcmeDemoBundle”);
用户将被要求“请输入包名称”。她可以将返回的输入一些名字问
方法。如果她离开它空,默认值(AcmeDemoBundle
返回)。
验证答案
你甚至可以验证答案。例如,在最后一个例子你要包名称。Symfony2命名约定后,ob娱乐下载应该后缀为包
。你可以验证通过
askAndValidate ()
方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ /……美元包=美元对话框- >askAndValidate (美元输出,“请输入包名称”,函数(美元回答){如果(“包”! = = substr (美元回答,6)){扔新\ RunTimeException (的包的名称应该后缀为\ '包\”);}返回美元回答;},假,“AcmeDemoBundle”);
这个方法有两个新参数,完整的签名是:
1 2 3 4 5 6 7
askAndValidate (OutputInterface美元输出、字符串|数组美元问题,回调美元验证器、整数美元尝试=假、字符串美元默认的=零)
的美元的验证器
是一个回调处理验证。它应该抛出一个异常是否有错了。异常消息显示在控制台中,所以这是一个很好的实践,把一些有用的信息。回调
函数应该返回用户输入的值如果验证成功。
你可以设置的最大次数要求美元的尝试
论点。如果你达到这个最大数量将使用缺省值,这是由于在过去的争论。使用假
意味着尝试的数量是无限的。用户将被要求只要他提供了一个无效的回答,只能继续如果她输入是有效的。
测试预计输入的命令
如果你想编写一个单元测试的命令预计从命令行输入,需要覆盖HelperSet所使用的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27
使用ob娱乐下载\组件\控制台\助手\DialogHelper;使用ob娱乐下载\组件\控制台\助手\HelperSet;/ /……公共函数testExecute(){/ /……美元commandTester=新CommandTester (美元命令);美元对话框=美元命令- >getHelper (“对话框”);美元对话框- >setInputStream (美元这- >getInputStream (“测试\ n”));/ / =用户输入“测试”,输入/ /如果你需要输入一个确认,“是的\ n”工作美元commandTester- >执行(数组(“命令”= >美元命令- >getName ()));/ / $ this - > assertRegExp (' /…/ ',$ commandTester - > getDisplay ());}受保护的函数getInputStream(美元输入){美元流= fopen (“php: / /记忆”,' r + ',假);fputs (美元流,美元输入);倒带(美元流);返回美元流;}
通过设置inputStream的DialogHelper
,你模仿控制台内部与所有用户输入cli。这样你可以测试任何用户交互(即使是复杂的)通过一个适当的输入流。