【问题标题】:Create a Custom Controller by artisan command laravel 5通过工匠命令 laravel 5 创建自定义控制器
【发布时间】:2015-11-01 21:27:43
【问题描述】:

我正在开发一个包,我需要为它创建一个命令来创建一个控制器,代码如下所示:

 class MyCommand extends Command {

   protected $name = 'package:mycommand';

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

   public function fire()
   {                      
     $this->call('vendor:publish');

     $argName = $this->argument('name'); 

    $this->call('make:controller', ['name' => $argName.'Controller']);

   }

此命令有效,它会创建一个如下所示的控制器:

 class wwController extends Controller {


    public function index()
    {

     }
}

还有其他一些功能,但没有实现,

问题: 无论如何要创建一个自定义controller,它从我的包中的一个控制器扩展,比如说MyController,并且还具有MyController 的功能 或者如果此命令无法做到这一点,是否还有其他适合此目的的命令? 我需要用这样的命令创建一个控制器:

 class newController extends MyController {

   public function myFunction()
   {

    }
}

【问题讨论】:

    标签: laravel laravel-5 laravel-artisan


    【解决方案1】:

    如果您想搭建一个控制器,您可能需要查看 Laracast/Generator 项目以获取有关如何完成此类事情的示例。

    MigrationMakeCommand.phpJeffrey(我在这里假设作者)创建了一个命令,该命令根据您传递给该命令的一些命令行参数生成迁移文件。这与您尝试执行的操作非常相似。

    据我所知,你会像作者在 第 56 行

    那样注入文件系统和作曲家
    /**
     * Create a new command instance.
     *
     * @param Filesystem $files
     * @param Composer $composer
     */
    public function __construct(Filesystem $files, Composer $composer)
    {
        parent::__construct();
        $this->files = $files;
        $this->composer = $composer;
    }
    

    然后,您需要特别注意第 156 行上的链方法调用,这与创建新控制器文件所需的步骤非常接近。

    protected function compileMigrationStub()
    {
        $stub = $this->files->get(__DIR__ . '/../stubs/migration.stub');
        $this->replaceClassName($stub)
            ->replaceSchema($stub)
            ->replaceTableName($stub);
        return $stub;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 2017-12-24
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 2017-08-28
      • 2015-05-24
      • 1970-01-01
      • 2015-07-09
      相关资源
      最近更新 更多