我正在开发一个Laravel package
,它将使用自定义的工匠命令,即php artisan make:baserepository User -c
。 -c
表示我也将创建一个controller
。
我希望在运行此artisan命令时能够创建一个controller
。这是我创建控制器的代码。
protected function createController() {
$modelsingular = Str::singular(Str::ucfirst($this->getNameInput()));
$modelplural = Str::plural($modelsingular);
$controller = Str::studly(class_basename($this->argument('name')));
$modelName = $this->qualifyClass($modelplural . '/' . $modelsingular);
$this->call('make:controller', [
'name' => "{$modelplural}\{$controller}Controller",
'--model' => $this->option('resource') ? $modelName : null,
]);
}
看看这一行'name' => "{$modelplural}\{$controller}Controller"
。我希望控制器在Admin\Admin.php
中像这样Http\Controllers
,而不是Admin\{Admin}Controller.php
。我在哪里弄错了?
我希望我的问题很清楚。
答案 0 :(得分:2)
您可以使用Artisan::call()
函数调用命令
例如:
Route::get('/foo', function () {
$exitCode = Artisan::call('email:send', [
'user' => 1, '--queue' => 'default'
]);
});
原始文档可以在这里找到:Artisan #calling-commands-via-code
答案 1 :(得分:1)
@porloscerros的评论帮助我解决了问题,这是我的解决方法
protected function createController() {
$modelsingular = Str::singular(Str::ucfirst($this->getNameInput()));
$modelplural = Str::plural($modelsingular);
$controller = Str::studly(class_basename($this->argument('name')));
$modelName = $this->qualifyClass($modelplural . '/' . $modelsingular);
$this->call('make:controller', [
'name' => $modelplural.'\'.$controller.'Controller',
'--model' => $this->option('resource') ? $modelName : null,
]);
}
答案 2 :(得分:1)
$a = 'there';
echo "hi\{$a}";
// hi\{there}
这里是\
之前的{
。
echo "hi\\{$a}";
// hi\there
现在,我们将\
转义为\\
。
"{$modelplural}\\{$controller}Controller"
// Admin\AdminController