Laravel:Response :: json,索引包含html

时间:2014-09-29 20:09:56

标签: php json laravel-4

我试图找出原因,当使用Laravel' s Response::json返回json数组时,我得到一个空对象,它应该返回一个html块。

这是我在控制器中的方法,它使用Eloquent模型添加新记录:

public function add() {

    $data = Input::only(array(
        'title'
    ));

    $validation = Validator::make($data, array(
        'title' => 'required|min:3|alpha_num_spaces'
    ));

    if ($validation->fails()) {

        return Response::json(array(
            'error' => true,
            'validation' => $validation->messages()
        ));

    }

    $todo = new Todo();
    $todo->title = $data['title'];

    if (!$todo->save()) {

        return Response::json(array(
            'error' => true,
            'validation' => array(
                'title' => 'Record could not be added'
            )
        ));

    }

    $row = View::make('partials.row', array('todo' => $todo));

    return Response::json(array(
        'error' => false,
        'append' => $row
    ));

}

当所有内容都经过验证并且记录添加到数据库时,最后Response::json返回:

{"error":false,"append":{}}

当我刚刚返回View::make('partials.row', array('todo' => $todo));时,我得到了预期的结果,这是一个包含新记录的表格行:

<tr data-id="17">
    <td>
        test 8
    </td>
    <td>
        <a href="#" class="edit">Edit</a>
    </td>
    <td>
        <a href="#" class="delete">Delete</a>
    </td>
</tr>

是否与Response::json和html内容发生冲突?

1 个答案:

答案 0 :(得分:2)

解决方案似乎是使用方法render()

$row = View::make('partials.row', array('todo' => $todo))->render();