【问题标题】:Laravel same controller work with one route and not with anotherLaravel 相同的控制器使用一条路线而不是另一条路线
【发布时间】:2017-07-09 01:18:10
【问题描述】:

更新

为了避免所有关于 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 发布到我的 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          |
+--------+-----------+-------------------------+------------------+-----------------------------------------------------------+--------------+

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

谢谢!

【问题讨论】:

    标签: php nginx laravel-5 routes laravel-5.4


    【解决方案1】:

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

    1) 你定义了:

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

    所以你想跑步

    http://example.com/pictures
    

    获取图片列表

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

     http://example.com/pictures
    

    服务器将尝试在public 目录中显示pictures 目录的内容

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

    【讨论】:

    • 耶稣!现在一切都说得通了,所以我的公共目录不能和我的路由同名,只有这个?
    • @EduRuiz 是的,如果您更改public 目录中的目录名称,它应该可以正常工作
    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 2018-11-26
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多