为什么在Mac和Windows中编写Laravel的路线会有所不同?哪一个是正确的?

Why writing Laravel's route can be differ in Mac & Windows?and which one is correct?

提问人:Graha Iswara 提问时间:11/13/2023 更新时间:11/13/2023 访问量:60

问:

我目前正在开发Laravel应用程序,因为我使用2不同的笔记本电脑和操作系统(Windows和Macbook),我意识到每次我切换PC时,我都必须更改文件web.php中的路由,只是为了使我的应用程序运行良好。

为什么 Windows 和 Mac OS 之间的编写 Laravel 的路线存在差异,我可以编写相同的方法吗?这样我就不需要在每次切换 PC 时修改脚本了。

这是Windows上的工作路线:

Route::get('/movies', 'MovieController@index');
Route::get('/movies/create', 'MovieController@create');
Route::get('/movies/edit/{id}', 'MovieController@edit');
Route::post('/movies/insert', 'MovieController@store');
Route::post('/movies/update', 'MovieController@update');
Route::get('/movies/delete/{id}', 'MovieController@destroy');

这是我的Macbook上的工作路线:

Route::get('/movies', 'App\Http\Controllers\MovieController@index');
Route::get('/movies/create', 'App\Http\Controllers\MovieController@create');
Route::get('/movies/edit/{id}', 'App\Http\Controllers\MovieController@edit');
Route::post('/movies/insert', 'App\Http\Controllers\MovieController@store');
Route::post('/movies/update', 'App\Http\Controllers\MovieController@update');
Route::get('/movies/delete/{id}', 'App\Http\Controllers\MovieController@destroy');

如果我尝试使用未正常工作的应用程序运行我的应用程序,则显示此错误:

enter image description here

这是另一个可能可以帮助您分析的规范:

  • PHP 版本 8.1.10
  • Composer 版本 2.5.1
  • 在 Windows 上,我使用 XAMPP
  • 在Macbook上,我使用Nginx

我是否需要更改或调整任何内容才能使我的路线在 Windows 和 Mac OS 中都能正常工作?

请帮忙,如果您需要任何进一步的信息,请告诉我。

谢谢。

PHP Laravel Windows macOS 路由

评论

2赞 Álvaro González 11/13/2023
如果我不得不猜测,您的类文件不遵循 PSR-4 关于大小写的命名约定,并且您有例如 而不是。NTFS 不区分大小写并忽略错误,Mac 文件系统区分大小写并且理所当然地失败。moviecontroller.phpMovieController.php

答:

2赞 Jarmo T 11/13/2023 #1

您应该使用控制器,然后在路由中引用控制器类。

例如:

<?php

use App\Http\Controllers\MovieController;

Route::get('/movies', [MovieController::class, 'index']);

这也是 Laravel 文档中的做法。

评论

1赞 Álvaro González 11/13/2023
为什么它在 Windows 上运行?
0赞 Nymul Islam Moon 11/13/2023 #2

您必须先导入类

<?php

use App\Http\Controllers\API\Frontend\BlogController;
use App\Http\Controllers\API\Frontend\CategoryController;
use App\Http\Controllers\API\RegisterController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::controller(RegisterController::class)->group(function(){
    Route::post('register', 'register');
    Route::post('login', 'login');
    Route::get('test', 'test');
});

这是一个演示,但如果你仔细观察,你就会明白这一点。有一些扩展可以自动导入 VS Code Laravel-Blade-Snepate 类,或者您可以在 your_code_editor_name 中搜索 YouTube Auto Import Laravel 类。