Laravel没有重定向到路线

时间:2014-07-24 22:47:33

标签: laravel laravel-4

我尝试验证表单中的某些数据,并将用户重定向到包含任何错误的页面(如果有)。我的代码没有重定向到任何路由。我所有路由的路由都能正常工作。我用Input :: all()回显了输入,它确实有用户输入。验证器也可以。我不确定究竟是什么阻止Redirect :: route工作

public function postPurchase()
{
    $validator = Validator::make(Input::all(), array(
        'condition' => 'required',
        'memory' => 'required',
        'color' => 'required',
        'accessories' => 'required',
        'shipping' => 'required'
    ));

    // $input = Input::all();
    // dd($input);

    if ($validator->fails()) {
        // echo "string";
        return Redirect::route('home');

    } else {
        echo "this succedded";
    }
    //Get prices, item id, etc and send user to checkout page
    // echo "Get prices, item id, etc and send user to checkout page";
}

这是postPurchase方法之前的代码:

public function getPurchase()
    {
        return View::make('general.purchase');
    }

    public function getCheckout()
    {
        return View::make('general.checkout');
    }

    public function postPurchaseCheck()
    {
        $input = Input::all();
        $this->input = $input;

        if (Input::get('buy')) {
            $this->postPurchase();
        }
        elseif (Input::get('cart')) {
            $this->postAddCart();
        }

    }

3 个答案:

答案 0 :(得分:2)

你打电话给这个功能 - 但是你没有回复'给予回复的重定向。

更改

if (Input::get('buy')) {
            $this->postPurchase();
        }

if (Input::get('buy')) {
            return $this->postPurchase();
        }

答案 1 :(得分:2)

尝试更新此

if (Input::get('buy')) {
            return $this->postPurchase();
 } elseif (Input::get('cart')) {
   return $this->postAddCart();
}

 if ($validator->fails()) {
        // echo "string";
        return Redirect::to('home');

    } else {
        echo "this succedded";
    }

也不要忘记在路线文件中定义

答案 2 :(得分:0)

更改postPurchaseCheck()方法以返回$ this-> postPurchase()返回的内容。因为你在内部调用postPurchase()方法但postPurchaseCheck()方法发生了post,所以重定向必须由处理POST请求的方法返回

public function postPurchaseCheck()
{
    $input = Input::all();
    $this->input = $input;

    if (Input::get('buy')) {
       return $this->postPurchase();
    }
    elseif (Input::get('cart')) {
       return $this->postAddCart();
    }

}