英文:
How to delete controller in Laravel 10 using command line
问题
我已使用命令 php artisan make:controller AuthLoginRegisterClass
在 Laravel 中创建了控制器。
现在,我想要仅使用命令行删除它,你能帮我吗?
谢谢
英文:
I have created controller in laravel using command php artisan make:controller AuthLoginRegisterClass
Now, I want to delete it using only command line, can you please help me ?
Thank you
答案1
得分: 1
你可以利用 shell 脚本的力量在终端中删除文件。我创建了一个脚本来删除控制器文件夹中的文件。它会在 `Controllers` 文件夹中查找文件,一旦找到就会删除它。以下是脚本:
##### delete.sh
```bash
#!/bin/bash
FILE_NAME=$1
# 在 Controllers 目录中查找文件
FILE_PATH=$(find ./app/Http/Controllers -name "$FILE_NAME" -type f -print -quit)
# 检查文件是否存在
if [ -n "$FILE_PATH" ]; then
# 删除文件
rm "$FILE_PATH"
echo "文件删除成功。"
else
echo "文件未找到。"
fi
你可以为这个文件赋予适当的权限,即 可执行
,使用命令 chmod +x delete.sh
,然后使用以下命令运行:
./delete.sh FooBarController.sh
希望这能帮助解决问题。
编辑:
你可以使用 php artisan make:command FooCommand
创建一个命令,并在 FooCommand.php 文件中添加以下代码:
protected $signature = 'controller:delete {name : 要删除的控制器文件的名称}';
protected $description = '删除控制器文件';
public function handle()
{
$controllerName = $this->argument('name');
$controllerPath = app_path("Http/Controllers/{$controllerName}.php");
if (File::exists($controllerPath)) {
File::delete($controllerPath);
$this->info("控制器文件 '{$controllerName}' 删除成功。");
} else {
$this->error("控制器文件 '{$controllerName}' 未找到。");
}
}
你的文件将看起来像这样:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class DeleteControllerFile extends Command
{
protected $signature = 'controller:delete {name : 要删除的控制器文件的名称}';
protected $description = '删除控制器文件';
public function handle()
{
$controllerName = $this->argument('name');
$controllerPath = app_path("Http/Controllers/{$controllerName}.php");
if (File::exists($controllerPath)) {
File::delete($controllerPath);
$this->info("控制器文件 '{$controllerName}' 删除成功。");
} else {
$this->error("控制器文件 '{$controllerName}' 未找到。");
}
}
}
现在你也可以使用 php artisan controller:delete foobarController
通过 php artisan 命令删除文件了。
<details>
<summary>英文:</summary>
You can utilize the power of shell script to delete the file using terminal. I created a script to delete the file in controllers folder. It will search for the file inside the `Controllers` folder and delete it once it finds it. Here's the script:
##### delete.sh
#!/bin/bash
FILE_NAME=$1
# Find the file in the Controllers directory
FILE_PATH=$(find ./app/Http/Controllers -name "$FILE_NAME" -type f -print -quit)
# Check if the file exists
if [ -n "$FILE_PATH" ]; then
# Remove the file
rm "$FILE_PATH"
echo "File deleted successfully."
else
echo "File not found."
fi
You can give this file appropriate permissions i.e. `executable` with `chmod +x delete.sh` and use it with the following command:
`./delete.sh FooBarController.sh`
Hope this helps in resolving the issue.
Edit:
You can create a command with `php artisan make:command FooCommand` and add the following code in the FooCommand.php file:
protected $signature = 'controller:delete {name : The name of the controller file to be deleted}';
protected $description = 'Delete a controller file';
public function handle()
{
$controllerName = $this->argument('name');
$controllerPath = app_path("Http/Controllers/{$controllerName}.php");
if (File::exists($controllerPath)) {
File::delete($controllerPath);
$this->info("Controller file '{$controllerName}' deleted successfully.");
} else {
$this->error("Controller file '{$controllerName}' not found.");
}
}
Your file will look something like this:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class DeleteControllerFile extends Command
{
protected $signature = 'controller:delete {name : The name of the controller file to be deleted}';
protected $description = 'Delete a controller file';
public function handle()
{
$controllerName = $this->argument('name');
$controllerPath = app_path("Http/Controllers/{$controllerName}.php");
if (File::exists($controllerPath)) {
File::delete($controllerPath);
$this->info("Controller file '{$controllerName}' deleted successfully.");
} else {
$this->error("Controller file '{$controllerName}' not found.");
}
}
}
Now you can also use `php artisan controller:delete foobarController` to delete the file with php artisan command.
</details>
# 答案2
**得分**: 0
你可以通过运行以下命令来实现:
```shell
rm app/Http/Controllers/AuthLoginRegisterClass.php
英文:
You can do so by running the following command
rm app/Http/Controllers/AuthLoginRegisterClass.php
答案3
得分: 0
首先,打开命令提示符并导航到您的Laravel项目的根目录 -
cd /path/to/your/Laravel/project
现在,使用'rm'命令,后面跟着控制器的路径,例如 -
rm app/Http/Controllers/ExampleController.php
(如果您的文件位于app/Http/Controllers中)
执行此命令后,控制器文件将从您的项目中永久删除。
英文:
Firstly, open the command prompt and navigate to the root directory of your Laravel project-
cd /path/to/your/Laravel/project
Now, use the 'rm' command followed by the path to the controller like-
rm app/Http/Controllers/ExampleController.php
(if your file is located in the app/Http/Controllers)
after executing this command the controller file will be permanently deleted from your project.
答案4
得分: 0
尽管Hassaan的命令会起作用,但我认为最简单的解决方案是创建一个新的Laravel命令来完成所有工作。无需编写shell脚本。
创建一个新的命令 php artisan make:command DeleteControllerCommand
。
命令应该类似于这样:
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class DeleteControllerCommand extends Command
{
protected $signature = 'delete:controller {controllerName : 要删除的控制器名称}';
protected $description = '按名称删除一个控制器';
public function handle()
{
$name = $this->argument('controllerName');
$path = app_path("Http/Controllers/{$name}.php");
if (File::exists($path)) {
File::delete($path);
$this->info("{$name} 已删除");
} else {
$this->error("Http/Controllers/ 中不存在 {$name}");
}
}
}
现在如果你运行 php artisan delete:controller AuthLoginRegisterClass
,它会检查控制器是否存在,如果存在就删除它。
英文:
Whilst Hassaan's command will work, I think the easiest solution is to just create a new Laravel command that does all the work. No need to write a shell script.
Create a new command php artisan make:command DeleteControllerCommand
The command should look something like this;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\File;
class DeleteControllerCommand extends Command
{
protected $signature = 'delete:controller {controllerName : The name of the controller you want to delete}';
protected $description = 'Delete a controller by name';
public function handle()
{
$name = $this-argument('controllerName');
$path = app_path("Http/Controllers/{$name}.php");
if (File::exists($path)) {
File::delete($path);
$this->info("{$name} deleted");
} else {
$this->error("{$name} does not exist in Http/Controllers/");
}
}
}
Now if you run php artisan delete:controller AuthLoginRegisterClass
it will check if the controller exists and delete it if it does.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论