如何从laravel中的函数传递视图和json?

时间:2014-04-28 18:00:15

标签: ajax json laravel laravel-4

这是我的功能

    if(isset($_POST['franchisesIds'])) {
        $id_array = array();
        foreach($_POST['franchisesIds'] as $data) {
            array_push($id_array, (int)$data['id']);
        }
        $results = DB::table('franchises')->whereIn('id', $id_array)->get();

    }
    return Response::json(array($id_array));
    return View::make('frontend.stores')->with('franchisesAll', $results);

所以我对如何传递所有这些数据感到有点困惑。我需要通过json来确保一切正常。同时我需要将一个id列表传递给视图。 我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

希望这是你想要的: 请勿直接使用$ _POST或$ _GET instead use Input

   $franchisesIds = Input::get('franchisesIds');
   $id_array = array();

    if($franchisesIds) {

        foreach( $franchisesIds as $data) {
            array_push($id_array, (int)$data['id']);
        }

        $results = DB::table('franchises')->whereIn('id', $id_array)->get();

    }

     $jsonArray = json_encode($id_array);

    return View::make('frontend.stores')->with(array('franchisesAll'=>$results,'idArrays'=>$jsonArray));

要将多个值传递给视图,请在the official Laravel documentation

中详细了解

答案 1 :(得分:1)

首先,您应该使用Input::get('franchisesIds')而不是$_POST['franchisesIds'],也没有理由这样做foreach循环:

foreach($_POST['franchisesIds'] as $data) {
    array_push($id_array, (int)$data['id']);
}

因为这已经是一个数组而你正在从这个数组中构建另一个数组,所以没有任何意义。所以你可以试试这个:

if($franchisesIds = Input::get('franchisesIds')) {
    $franchises = DB::table('franchises')->whereIn('id', $franchisesIds)->get();
}

然后将$franchisesIdsresult传递给view,您可以使用此功能:

return View::make('frontend.stores')
            ->with('franchises', $franchises)
            ->with('franchisesIds', $franchisesIds);

你也可以使用这样的东西(compact):

return View::make('frontend.stores', compact('franchises', 'franchisesIds'));

没有理由使用json_encode对您的$franchisesIds进行编码。

答案 2 :(得分:0)

您也可以使用

$results = DB::table('franchises')
    ->whereIn('id', $id_array)
    ->get()
    ->toJson();