Is there a way to bring up a Yii console like 'rails console'?

时间:2015-05-12 23:31:35

标签: yii yii2

Is there a way to interact with Yii on the command line with a console like None? I'd like to test DB and ActiveRecord calls.

2 个答案:

答案 0 :(得分:1)

您可以安装yii-shell。它是由Yii团队制作的。它的作用类似于rails console

编辑:

对不起,我在yii-shell的文档中工作,这是在撰写本文时 - 但是是一个承诺。

这就是你如何在Yii 2中使用正确的REPL。

首先,我们需要获得Psysh。您可以全局安装它以进行播放,但我建议您将以下行添加到composer.json

require-dev: {
    // ... some other packages ...
    "psy/psysh": "0.7.2"
}

运行composer update以安装此软件包。

现在我们需要将它添加到控制器中。从控制器调用断点的方法是eval(\Psy\sh());

请注意,这会调用控制台进行调试。因此,如果您的应用程序是使用Apache,Nginx或任何其他未绑定到交互式控制台的服务器,那么这是毫无意义的

为了实现这一点,我使用PHP的内置服务器和Yii的包装器为应用程序提供了服务。

在Yii Basic App模板中......

cd /path/to/application
./yii serve localhost:12345

在任何控制器中,......说controllers/SiteController.php

public function actionIndex()
{
    eval(\Psy\sh()); // <-- debugger point
    return $this->render('index');
}

当您通过网址访问此操作时,它会挂起您的浏览器。如果您在控制台中查看,您会看到一个交互式shell,它应该像rails c一样工作。查看Psysh Documentation了解更多详情。要退出此交互式控制台,请键入exit;这应该将控制权返回给PHP的内置服务器。 不要使用 Ctrl-C 退出交互式控制台,因为这样会关闭PHP的内置服务器。

在Yii Advanced App模板中......

此应用程序的服务暂时不起作用,因为它默认提供不存在的console/web内容。我和Yii一起提出issue;如果您感兴趣,可以跟随它。

但是,如果你有控制台控制器,你可以做我们为基本应用做的事情。运行console命令时,应该会显示相同的交互式调试控制台。

答案 1 :(得分:0)

1)安装https://github.com/yiisoft/yii2-shell

composer require yiisoft/yii2-shell

2)./yii shell