Laravel 同一控制器适用于一条路线而不适用于另一条路线

Laravel same controller work with one route and not with another

更新

为了避免关于 ajax 调用的所有调试和问题,我在控制器中创建了一个只有 echo 'hey!' 的索引方法,并且仍然得到相同的东西:

app.url/blocktest 给我一个 hey,但更改为 app.url/pictures,注释掉一条路线并取消注释另一条路线给我一个 404 错误.

更新和

我正在使用 laravel(版本 5.4)构建我的第一个应用程序,但是在使用裁剪进行图像上传的过程中,我的路线(最初是照片)开始出现 404 错误,经过数小时的调试我一无所获,所以改变路线,它开始工作,然后再次被封锁,所以我有点困惑,我想我真的没有在这里得到什么。我的实际路线:

  Route::resource('partners', 'PartnersController');
  //Route::resource('pictures', 'PicturesController');
  Route::resource('blocktest', 'PicturesController');

这样一切正常,我的 ajax post 到我的 PicturesController 一切顺利,这是控制器功能:

public function store(Request $request)
    {
        // echo 'hey';
        $requests = request()->file('picture');
        foreach ($requests as $picture) {
            $filename  = time() . '.' . $picture->getClientOriginalExtension();
            $path = public_path('pictures/' . $filename);
            Image::make($picture->getRealPath())->crop(600, 600)->save($path);


            $picture = new Picture;
            $picture->partner_id = $request['partner_id'];
            $picture->src = $filename;
            $picture->save();
        }
    }

但如果我将路线更改为:

Route::resource('partners', 'PartnersController');
Route::resource('pictures', 'PicturesController');
// Route::resource('blocktest', 'PicturesController')

尝试使用 pictures 并将 ajax 指向新路由,我从 nginx 收到 404。

这是 php artisan route:list

的结果
+--------+-----------+-------------------------+------------------+-----------------------------------------------------------+--------------+
| Domain | Method    | URI                     | Name             | Action                                                    | Middleware   |
+--------+-----------+-------------------------+------------------+-----------------------------------------------------------+--------------+
|        | GET|HEAD  | api/user                |                  | Closure                                                   | api,auth:api |
|        | GET|HEAD  | partners                | partners.index   | FrutoProibido\Http\Controllers\PartnersController@index   | web          |
|        | POST      | partners                | partners.store   | FrutoProibido\Http\Controllers\PartnersController@store   | web          |
|        | GET|HEAD  | partners/create         | partners.create  | FrutoProibido\Http\Controllers\PartnersController@create  | web          |
|        | GET|HEAD  | partners/{partner}      | partners.show    | FrutoProibido\Http\Controllers\PartnersController@show    | web          |
|        | PUT|PATCH | partners/{partner}      | partners.update  | FrutoProibido\Http\Controllers\PartnersController@update  | web          |
|        | DELETE    | partners/{partner}      | partners.destroy | FrutoProibido\Http\Controllers\PartnersController@destroy | web          |
|        | GET|HEAD  | partners/{partner}/edit | partners.edit    | FrutoProibido\Http\Controllers\PartnersController@edit    | web          |
|        | GET|HEAD  | pictures                | pictures.index   | FrutoProibido\Http\Controllers\PicturesController@index   | web          |
|        | POST      | pictures                | pictures.store   | FrutoProibido\Http\Controllers\PicturesController@store   | web          |
|        | GET|HEAD  | pictures/create         | pictures.create  | FrutoProibido\Http\Controllers\PicturesController@create  | web          |
|        | GET|HEAD  | pictures/{picture}      | pictures.show    | FrutoProibido\Http\Controllers\PicturesController@show    | web          |
|        | PUT|PATCH | pictures/{picture}      | pictures.update  | FrutoProibido\Http\Controllers\PicturesController@update  | web          |
|        | DELETE    | pictures/{picture}      | pictures.destroy | FrutoProibido\Http\Controllers\PicturesController@destroy | web          |
|        | GET|HEAD  | pictures/{picture}/edit | pictures.edit    | FrutoProibido\Http\Controllers\PicturesController@edit    | web          |
+--------+-----------+-------------------------+------------------+-----------------------------------------------------------+--------------+

我认为这是一种非常奇怪的行为,但也许我只是没有看到什么。

谢谢!

这里的问题大概是这样的:

1) 您定义:

Route::resource('pictures', 'PicturesController');

所以你想得到 运行 例如

http://example.com/pictures

获取图片列表

2) 但是您还在 public 目录中创建了 pictures 目录,所以当您 运行

 http://example.com/pictures

服务器将尝试在 public 目录

中显示 pictures 目录的内容

不行。您需要将此 url 用于控制器或 public 目录中的文件。否则你会得到这种奇怪的行为。