laravel или php question: нажмите кнопку, чтобы отобразить значение на той же странице - PullRequest
0 голосов
/ 07 ноября 2018

Я добавил кнопку на странице просмотра, но когда я нажимаю на нее, она должна отображаться на тех же страницах, но показанный мной результат перейдет на другие страницы. Ниже приведен код для просмотра файлов:

<a href="{{url('/cart/add')}}/{{$p->id}}" class="button add-cart-cat button--small card-figcaption-button">Add to Cart</a>

и файл контроллера:

public function addItem($id){

  $pro = products::find($id);
  Cart::add(['id' => $pro->id, 'name' => $pro->pro_name,
  'qty' => 1, 'price' => $pro->pro_price,
  'options' =>[
  'img' => $pro->pro_img
  ]]);
  echo "add to cart successfully";
}

В вышеприведенном контроллере я упомяну, что передаст значение, а затем покажет сообщение, которое успешно, да, действительно, оно получится в результате, но на других пустых страницах

Кстати, вот и файл маршрута, который я использую

Route::get('cart/add/{id}', 'cartController@addItem');

Итак, есть ли способ отобразить результат на той же странице, когда я нажимаю кнопку? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы не перенаправляете страницу

Вы должны перенаправить маршрут со своим сообщением.

Пример

public function addItem($id){
  $pro = products::find($id);
  Cart::add([
      'id' => $pro->id, 'name' => $pro->pro_name,
      'qty' => 1, 'price' => $pro->pro_price,
      'options' =>[
         'img' => $pro->pro_img
       ]
  ]);
  Session::flash('message', "add to cart successfully");
  return Redirect::back();
}

Примечание: вы должны поставить use Session; на верх вашего контроллера после namespace

и тогда вы можете получать все флеш-сообщения в блейде следующим образом:

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif
0 голосов
/ 07 ноября 2018

Пожалуйста, посмотрите документы для этого.

Проблема в том, что вы публикуете на /cart/add, а затем вы должны перенаправить пользователя обратно на страницу - но вы не ... вместо этого вы просто возвращаете ответ на /cart/add страница.

Вместо этого сделайте это

public function addItem($id){

  $pro = products::find($id);
  Cart::add(['id' => $pro->id, 'name' => $pro->pro_name,
  'qty' => 1, 'price' => $pro->pro_price,
  'options' =>[
  'img' => $pro->pro_img
  ]]);
  //echo "add to cart successfully";


  //Return the user back to the page they came from with a message
  return back()->with('status', 'add to cart successfully');
}

Затем в вашем файле блэйджа страницы, где находится кнопка добавления в корзину, добавьте это куда-нибудь ...

//If the session has a message to display, then show it
@if (session('status'))
    <div class="alert alert-success">
        {{ session('status') }}
    </div>
@endif

Если вы не используете Bootstrap, настройте сообщение html / css так, как вам удобно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...