Привет, у меня есть контроллер ресурсов в Laravel 4 . В нем есть все методы по умолчанию, сгенерированные контроллером artisan: make.

Имеются модели и т. Д.

Пользователь щелкает ссылку в представлении, которое выполняет URL :: route к именованному маршруту, указывающему на действие контроллера. Он указывает на метод store () в контроллере, который должен быть методом POST.

Я пишу свой код в методе store () для обработки этого запроса. Он использует красноречие для вставки данных в БД. Он возвращает простой текстовый ответ с кодом HTTP 200.

Когда пользователь нажимает на вышеупомянутую ссылку (которая указывает на метод store ()), кажется, что браузер просто переходит к индексу (GET) этого контроллера, и код не запускается, потому что метод store () игнорируется.

Когда я перемещаю весь код из метода store () в метод index (), все работает, как ожидалось.

Что я делаю не так, что мой метод store () не обрабатывает мой код. Даже при создании URL-адреса для действия магазина напрямую с помощью URL :: action, это не удается.

Может кто-нибудь, пожалуйста, просветите меня?

Код:

Способ хранения:

public function store()
    {
        $itemsArray = Session::get('sdata');

            $cartItem = new Cart;

            $cartItem->session_id = Session::get('sid');
            $cartItem->items = json_encode($itemsArray);

            $cartItem->save();

    return Response::make('an item was added to carts', 200);      
}

Вид: <a href="{{ URL::route('shop.cart.store') }}">Go</a>

Тот же результат и для этого представления:

     `<a href="{{ URL::action('RelevantController@store') }}">Go</a>`
1
Prashant 29 Май 2013 в 19:59

1 ответ

Лучший ответ

Это потому, что тег <a> может отправлять только GET-запросы. Попробуйте создать новый метод, например addToCart, а затем установить новый роут на routes.php

0
Gabrielyan 29 Май 2013 в 20:58
Я полностью переместил эту функцию на новый метод, чтобы решить эту проблему. оказывается, метод POST используется только с формами, и вы не можете использовать его со ссылками, как я пытался. Это можно сделать, но с помощью JS, для чего POST не задумывался. РЕДАКТИРОВАТЬ: Только что видел ваш ответ, Габриелян. В итоге я сделал именно то, что вы советовали выше, еще до того, как его прочитал - даже мой новый метод называется addToCart. Спасибо!
 – 
Prashant
29 Май 2013 в 22:41