【问题标题】:Redirect route with two parameters in WITH [Laravel]在 WITH [Laravel] 中使用两个参数重定向路由
【发布时间】:2014-10-17 01:52:35
【问题描述】:

我在 Redirect::route 中传递两个带有“with”的变量时遇到问题...这是我的代码...

怎么做

return Redirect::route('cart-success')->with(
            array(
                'cartSuccess' => 'You successfuly ordered. To track your order processing check your email', 
                'cartItems' => Cart::contents()
            )
        );

这里是错误:

未定义变量:cartItems(查看:C:\xampp\htdocs\laravel-webshop\laravel\app\views\cart-success.blade.php)

Route::group(array('before' => 'csrf'), function() {
    //Checkout user POST
    Route::post('/co-user', array(
        'as' => 'co-user-post',
        'uses' => 'CartController@postCoUser'
    ));
});

控制器

public function postCoUser() {
    $validator = Validator::make(Input::all(), array(
        'cardholdername' => 'required',
        'cardnumber' => 'required|min:16|max:16',
        'cvv' => 'required|min:3'
    ));

    if($validator->fails()) {
        return Redirect::route('checkout')
                ->withErrors($validator)
                ->withInput();
    } else {
        return Redirect::route('cart-success')->with(
            array(
                'cartSuccess' => 'You successfuly ordered. To track your order processing check your email', 
                'cartItems' => Cart::contents()
            )
        );
    }
}

查看

 @extends('publicLayout.main')

 @section('content')
   @if(Session::has('cartSuccess'))
    <p>{{ Session::get('cartSuccess') }}</p>

    <?php $total = 0; ?>
    @foreach ($cartItems as $cartItem)
        Name: {{ $cartItem->name }} <br>
        Price: {{ $cartItem->price }} &euro;<br>
        Quantity: {{ $cartItem->quantity }} <br>
        <?php $final = $cartItem->price * $cartItem->quantity; ?>
        Final price: {{ $final }} &euro;<br>
        <?php $total += $final; ?>
        <hr>
    @endforeach
    Total: {{ $total }} &euro;
 @endif
@stop

【问题讨论】:

  • Redirect::with() 设置会话变量,而不是设置视图变量。路由cart-success中定义的方法在哪里?从那里您必须检索会话值并使用 View::make() 将该值传递给您的视图
  • 我需要会话变量……我可以得到一个会话变量,但不能得到两个……这是问题
  • route('cart-success') 去哪儿了?您可以将代码也发布到该路由(控制器方法)吗?
  • 仍然没有显示cart-success 在哪里?您只显示您的 POST 路线,而不是 提交后的路线(成功路线)
  • 我又编辑了...是你需要的吗?

标签: php laravel frameworks


【解决方案1】:

你可以试试这个:

return Redirect::route('cart-success')
               ->with('cartSuccess', 'You successfuly ordered. To track your order processing check your email')
               ->with('cartItems', Cart::contents());

或者这个:

return Redirect::route('cart-success', array('cartSuccess' => '...', 'cartItems' => '...'));

【讨论】:

  • 我检查了第一部分-&gt;with('cartSuccess', 'You successfuly ordered.) 你能解释我如何访问视图中的cartSuccess key 吗?
  • 重定向时,with 方法将使用会话中的密钥存储数据,因此您可以使用Session::get('cartSuccess') 从会话中访问key 的值。
  • 还有其他更便宜的方法可以做到这一点,我不想在会话中存储这种信息。能指导一下吗?
  • @TheAlpha return Redirect::route('cart-success', array('cartSuccess' =&gt; '...', 'cartItems' =&gt; '...')); 现在如何在视图中访问此密钥 cartSuccess 我尝试使用 Session::get('cartSuccess') 但注意到回来了。
  • @YousefAltaf,是的
【解决方案2】:

你可以像这样传递两个变量

$response=array('cartSuccess' => 'You have successfully ordered. To track your order processing check your email', 'cartItems' => Cart::contents());    

return Redirect::route('cart-success',$response);

【讨论】:

    【解决方案3】:

    您也可以使用它,这将有助于保持代码格式与通常的路线相同。

    return \Redirect::route('your.route.name',['param1'=>'param1_value','param2'=>'param2_value']);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2017-12-30
      • 2022-01-26
      • 2013-09-14
      • 2017-04-01
      相关资源
      最近更新 更多