Чтобы избежать отладки и вопросов о вызове ajax, я создал метод index в контроллере только с 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 на новый маршрут, который я получаю 404 от nginx.
Вот результат 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) Но ты тоже создал pictures
каталог в public
каталог, поэтому, когда вы запускаете
http://example.com/pictures
сервер будет пытаться отобразить содержимое pictures
каталог в public
каталог
Это не сработает. Вам нужно использовать этот URL либо для контроллера или для файлов в public
каталог. В противном случае вы получите это странное поведение.
Других решений пока нет …