Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 24.03.2014 23:45:31

При ресурсном роутинге не работает ajax

Добрый день. Есть вот такой роутинг:

Route::get('create', array('uses' => 'UserController@create', 'as' => 'user.create'));
Route::post('upload', array('uses' => 'UserController@uploadAvatar'));
Route::post('store', array('uses' => 'UserController@store'));

При регистрации пользователя можно добавить аватар через ajax (будет показана превью перед сохранением). Все работает прекрасно, но стоит сделать так:

Route::post('upload', array('uses' => 'UserController@uploadAvatar'));
Route::resource('user', 'UserController');

то работа с изображением перестает работать (ни превью, ни сохранение). Что может быть не так?

Не в сети

#2 25.03.2014 20:06:57

Re: При ресурсном роутинге не работает ajax

Ты удаляешь маршруты create и store, т.к. ресурсный контроллер обрабатывает совсем другие URL и методы — см. документацию.

Не в сети

#3 25.03.2014 21:10:10

Re: При ресурсном роутинге не работает ajax

Вообщем, не совсем понимаю как добавить новый маршрут, если используем ресурсы sad

Не в сети

#4 25.03.2014 21:12:24

Re: При ресурсном роутинге не работает ajax

Дело не в том, что ты не так добавляешь новый маршрут, а в том, что ты убрал create и store, добавил (оставил) upload и ресурсный контроллер — но create/store так и остались недобавленными, если ты первый кусок кода заменяешь вторым. upload-то ты оставил, а остальные два?

Не в сети

#5 25.03.2014 21:19:37

Re: При ресурсном роутинге не работает ajax

create/store автоматически создаются ресурсом, зачем их добавлять?

Не в сети

#6 27.03.2014 19:07:36

Re: При ресурсном роутинге не работает ajax

  1. create/store автоматически создаются ресурсом, зачем их добавлять?

Это имена методов в классе, а не в URL. См. документацию выше — POST /resourceControllerClass@store. У тебя же получается, что оригинальный URL (без ресурсного контроллера) был POST /resource/store, а с контроллером — POST /resource. В итоге если ты не поменял пути в коде JavaScript, то получишь 404.

Посмотри, что получается при AJAX через Firebug или другую консоль.

Не в сети

#7 28.03.2014 10:38:09

Re: При ресурсном роутинге не работает ajax

Проблему решил вот как: переименовал scripts.js в scripts.blade.php, в представлении регистрации вставил

@section('scripts')
@include('users.scripts')
@stop

В коде скрипта сделал так:

url: "{{ URL::to('upload') }}",

И собственно оставил ресурсный роутинг. Все работает smile

Не в сети

Подвал раздела