当前位置: 首页 > 面试题库 >

通过命令行调用laravel控制器

许茂才
2023-03-14
问题内容

在kohana框架中,我可以使用以下命令通过命令行调用控制器

php5 index.php --uri=controller/method/var1/var2

是否可以通过CLI在Laravel 5中调用我想要的控制器?如果是,该怎么做?


问题答案:

到目前为止,还没有办法(不确定是否会发生)。但是,您可以创建自己的Artisan
Command
来执行此操作。CallRoute使用以下命令创建命令:

php artisan make:console CallRoute

对于Laravel 5.3或更高版本,您需要使用make:command

php artisan make:command CallRoute

这将在中生成命令类app/Console/Commands/CallRoute.php。该类的内容应如下所示:

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Illuminate\Http\Request;

class CallRoute extends Command {

    protected $name = 'route:call';
    protected $description = 'Call route from CLI';

    public function __construct()
    {
        parent::__construct();
    }

    public function fire()
    {
        $request = Request::create($this->option('uri'), 'GET');
        $this->info(app()['Illuminate\Contracts\Http\Kernel']->handle($request));
    }

    protected function getOptions()
    {
        return [
            ['uri', null, InputOption::VALUE_REQUIRED, 'The path of the route to be called', null],
        ];
    }

}

然后,您需要通过将命令添加到$commands数组中来注册该命令app/Console/Kernel.php

protected $commands = [
    ...,
    'App\Console\Commands\CallRoute',
];

现在,您可以使用以下命令呼叫任何路线:

php artisan route:call --uri=/route/path/with/param

请注意,此命令将返回响应,就像发送到浏览器一样,这意味着它在输出的顶部包含HTTP标头。



 类似资料:
  • 我想使用Windows 10上的命令行中的,以及许多其他Linux工具。我知道有GnuWin32和其他二进制替代品,但没有一个能像Linux的Windows子系统(WSL)那样优雅地工作;包括更新机制。 使用WSL,可以调用

  • 我正在使用Grails 2.3.8,最近我开始修复一些过时的测试,这些测试在过去的两个Grails 2.3版本中停止工作。x版本。 在Spock控制器测试期间,以及使用Controller中的域实例进行响应时,根据测试执行环境,针对Model的断言会失败/通过。具体来说,当使用Grails控制台vs IntelliJ(JUnit)执行测试时,模型上的域实例具有不同的属性名称。 我在我的Spock规

  • 监视器命令 监视器命令用 ceph 工具发出: ceph [-m monhost] {command} 命令格式通常是(但不总是): ceph {subsystem} {command} 系统命令 下列命令显示集群状态: ceph -s ceph status 下列命令显示集群状态的运行摘要、及主要事件: ceph -w 下列命令显示监视器法定人数状态,包括哪些监视器参与着、哪个是首领。 cep

  • 问题内容: 如何检测是否使用SH:或JS:调用了Node.JS文件? 问题答案: if (require.main === module) { console.log(‘called directly’); } else { console.log(‘required as a module’); } 请在此处查看有关此文档的文档:https : //nodejs.org/docs/latest/

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在

  • null 到目前为止,我在cmd中的输入是: d: CD JavaProgram javac snake.java board.java 从这里我该怎么办? 这是指向这2个java文件源代码的链接。http://zetcode.com/tutorials/javagameStutorial/snake/