laravel或php问题:单击按钮以在同一页面上显示值

时间:2018-11-07 02:05:26

标签: php laravel

我在查看页面上添加了一个按钮,但是当我单击它时,它应该显示在同一页面上,但是显示给我的结果将转到其他页面。 下面是视图文件的代码:

<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 :(得分:0)

请参阅docs

问题是您要发布到/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。

答案 1 :(得分:0)

您没有重定向页面

您应该使用消息重定向路线。

示例

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放在控制器顶部

,然后您可以像这样在刀片中接收所有Flash消息:

@if (Session::has('message'))
   <div class="alert alert-info">{{ Session::get('message') }}</div>
@endif