你如何在 Laravel 的 json 响应中返回一个视图?

Mat*_*son 2 php json laravel laravel-4

我正在使用 Laravel 实现一个简单的注册表单。失败时,它应该返回一个 json 响应:

{"success":"false", "message":"Could not log in newly registered user"}`
Run Code Online (Sandbox Code Playgroud)

这按预期工作。如果注册和登录成功,我想返回:

{"success":"true", "message":$html}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$html将使用视图创建。这其中的重要部分如下:

if(Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password'))))
{
    $html = View::make('welcome_new_user', array('first_name' => Input::get('first_name')));
    return Response::json(array('success' => 'true', 'message' => $html));
}
else
{
    return Response::json(array('success' => 'false', 'message' => 'Could not log in newly created user.'));
}
Run Code Online (Sandbox Code Playgroud)

失败时,我得到预期的响应。成功后,我得到"success":"true",但是一个空的message. 我$html在返回之前立即回显了,它包含预期的 html。为什么返回的消息是空的?

pat*_*cus 5

View::make()实际上返回一个Illuminate\View\View对象。用双引号包围变量的原因是因为这样做隐式调用$html->__toString(),它调用render()方法并返回由View对象表示的html 。

从 中获取 html 的显式方法Viewrender()直接调用该方法 ( $html->render())。