Laravel ajax запрос

antras2007

Новичок
Доброго всем времени суток. Подскажите кто знает. Есть интернет магазин. У каждого товара есть кнопка "Добавить в корзину". Как мне сделать так что бы товар добавлялся аякс запросом. Я сделал что бы он добавлялся обычным запросом с преезагрузкой страницы но это не удобно. Я делаю сдедующим способом:

есть роут:
PHP:
Route::post('add_to_cart', 'CartController@add');
есть ajax запрос:
PHP:
<script>
$(document).ready(function(){
$('#add_to_cart').on('click', function(){
$.ajax({
type: "POST",
url: "add_to_cart"})
})
});
</script>
и соответсвенно сам контроллер:

PHP:
<?phpnamespace App\Http\Controllers;

use App\Http\Requests\AddToCartRequest;
use Illuminate\Routing\Controller;use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;

class CartController extends Controller{
public function index()
{
}
public function add($id)
{
$good = \DB::table('goods')->where('id', '=', $id)->get();
Session::push('cart', $good);
}

но все это соответсвенно не работает. Подскажите как это сделать ajax запросом только еще одна проблема мне в метод add, который находится в контроллере нужно передать id в качестве аргумента. Как это сделать не знаю.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Надо отправить запрос на тот же адрес, какой ты уже сделал, только AJAXом.

Не надо передавать ничего в метод add, надо вызвать соответствующий роут. В роуте прописать, что такой-то параметр будет передаваться автоматом.
 

AmdY

Пью пиво
Команда форума
Для laravel прикрутили бы себе нормальную корзину вроде этой https://github.com/Crinsane/LaravelShoppingcart
Для передачи данных нужно использовать аттрибут data
PHP:
$.ajax({
    type: "POST",
    url: "add_to_cart"
    data: { id: $('#itemId').val(); }
  })
})

p.s. Я только что словил себя на мысли, что начинаю забывать jQuery, становлюсь ангулярозависимым.
 

fixxxer

К.О.
Партнер клуба
AmdY, я уже давно эту гадость забыл, мне проще на чистом es5+ написать.
 

AmdY

Пью пиво
Команда форума
Так когда же поддержка этого счастья будет во всех браузерах пользователей, даже в angular встроена легкая версия jquery, чтобы не страдать с совместимостью.
 

fixxxer

К.О.
Партнер клуба
Так когда же поддержка этого счастья будет во всех браузерах пользователей, даже в angular встроена легкая версия jquery, чтобы не страдать с совместимостью.
В angular2 уже не будет.

Вообще в IE9+ все хорошо с базовым ES5. На IE8 уже во многих проектах можно забивать. А все новье вроде того же fetch это скорее рассматривать как стандартные интерфейсы, реализации которых когда-то будут в браузерах. Примерно как если бы psr-3 логгер когда-то появился в php - ну выкидываешь monolog и все.
 

antras2007

Новичок
Надо отправить запрос на тот же адрес, какой ты уже сделал, только AJAXом.

Не надо передавать ничего в метод add, надо вызвать соответствующий роут. В роуте прописать, что такой-то параметр будет передаваться автоматом.

Как передать автоматом? Можно пример какой нибудь?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
antras2007, документацию открывали? Там же все описано, с примерами, есть гугл.

Вот прямая ссылка: http://laravel.com/docs/5.0/routing#route-parameters
Описано как создать роут с параметрами, то есть если ты запрашиваешь роут вида /users/{id},то в контроллере роута ты можешь написать function users($id){} и внутри юзать идентификатор. Только в роуте неплохо было бы проверить его регуляркой.
 

hell0w0rd

Продвинутый новичок
fixxxer, промисы старые, $fetch видимо не будет в 1.x.
2.0 интересно, на завязка на TS не очень радует.
 

fixxxer

К.О.
Партнер клуба
fixxxer, промисы старые, $fetch видимо не будет в 1.x.
2.0 интересно, на завязка на TS не очень радует.
Ну, так-то почти ES6, но с аннотациями да, чота перемудрили.

Как вариант есть Dart, если уж не уйти от компиляции - можно и на полноценном языке программирования работать. Рантайм вроде не шибко тормозной, да и всякие zonejs его повторяют частично.
 

hell0w0rd

Продвинутый новичок
fixxxer, аннотации и в es-next предложили добавить, https://github.com/wycats/javascript-decorators, и вроде babel их уже реализовал, кстати.
Но да, аннотации настораживают. Хотя сейчас мы ручками пишем что-то вроде аннотаций для DI.
А по поводу dart - что-то язык мечется, то будем делать runtime, то не будем делать. Мне последнее время больше нравятся разработки FB.
На react-native мобильные приложения FB уже 2 года работают. На react инстаграм и теперь как минимум половина FB.
 

fixxxer

К.О.
Партнер клуба
Да ну жесть же с html посреди js. Не, фейсбуку-то может и подойдет, все равно html пишут программисты.
 

hell0w0rd

Продвинутый новичок
fixxxer, да прекрати, ты же прекрасно понимаешь, что это не html. Подобный подход не оставляет выбора - все бьется на компоненты и это на самом деле очень удобно. Причем в react ты можешь (если совсем припекает), не использовать jsx, в отличии от angular, который вынуждает использовать свой js-DSL поверх html.
Код:
render() {
    var items = this.props.items.map((item) => {
        return <Item {...props} />;
    });
    return (
        <div>{items}</div>
    );
}

<div>
    <div ng-repeat="item in items" ng-model="item"></div>
</div>
 

fixxxer

К.О.
Партнер клуба
Точно такой же "не html", как в bem-core или в enyo. Один хрен, улучшенные версии echo "<div>".

Микросинтаксисы ангуляра - тоже проблема, не спорю, но это меньшее из зол.

Web Components развивать надо, а не костылики эти вот.
 

hell0w0rd

Продвинутый новичок
fixxxer, web components никак не решат проблему отставшего от реальности DOM api, или я чего-то не знаю?
React - это не только jsx. Это реализация DOM с diff алгоритмом и как следствие пакетное обновление реального dom, как тут (https://github.com/wilsonpage/fastdom). Ну и на react-native в любом случае стоит взглянуть.
пару минут посмотри, что позволяет react в сравнении с angular и ember.
 

fixxxer

К.О.
Партнер клуба
Я знаю, как оно работает :) Ну и что? Shadow DOM и MutationObserver на костыликах. Гениальной идее же собирать очередь - примерно столько же лет, сколько первым табличным процессорам.

Впрочем, есть одна область, где такой подход рулит. Это реализация wysiwyg-редакторов.

(Вообще, если бы не отвратительный jsx, который суют насильно, я бы относился намного более позитивно, конечно. Ну и немного раздражает это хипстерское дрочево на свежие идеи, которым уже по 50 лет.)
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
fixxxer, а где вообще сейчас новые идеи, судя по докладам - react перенял опыт из геймдева. И в react не используется mutation observer и всячески пропагандируется, что это костыль для кривой архитектуры, чем он собственно и является.
jsx никто насильно не сует, но с ним проще, чем без него.
 

fixxxer

К.О.
Партнер клуба
Dirty check, кстати, тоже из геймдева.

С jsx не проще при нормальном разделении труда. Ни один верстальщик не поймет эту хрень, с ангуляром же достаточно объяснения в 15 минут. Может и не суют, но примеров использования без него я не наблюдал. Хотя все остальное там мне вполне нравится, у этого есть своя ниша. Не носились бы с еще этим как с очередным silver bullet, как в свое время с nodejs и mongodb... :)
 
Последнее редактирование:
Сверху