如何从laravel中的控制器发送json到视图?

时间:2014-04-09 14:31:08

标签: php json laravel

我正在尝试制作一个服务器laravel,我的想法是,给定一个电子邮件地址和密码,你可以在数据库中搜索elusuario,如果有人用json回答我。我的问题是我不知道我做得好吗

我的代码:

模型

Class Usuario extends Eloquent{
protected $table = 'Usuario';
}

UsuarioController

class UsuarioController extends BaseController{

public function buscarUsuario($Correo, $Contraseña){
    $usuario = Usuario::find($Correo,$Contraseña)->toJson();

    return View::make('usuario.lista', array('usuario' => $usuario));
}

} 

lista.blade.php(查看/ usuario)

{{$usuario}}

routes.php文件

Route::get('usuario/{Correo}/{Contraseña}', array('uses' => 'UsuarioController@buscarUsuario'));

我也想知道,如何发送值ls URL以查看JSON是否运行良好?

4 个答案:

答案 0 :(得分:1)

如果您只需要将json作为响应返回:

class UsuarioController extends BaseController {

    public function buscarUsuario($Correo, $Contraseña)
    {
        $usuario = Usuario::find($Correo,$Contraseña);

        return Response::json(array('usuario' => $usuario));
    }

}

如果您使用浏览器关注网址:

http://localhost/marsur-servidor/usuario/user@domain.com/mypassword12345

当然,如果您的网址以

开头
http://localhost/marsur-servidor/

你应该看到:

{
    usuario: {
        ...
    }
}

我不确定Laravel和PHP是否也会使用重音符号,因此您可能需要更改(在所有代码中)

Contraseña

Contrasena

答案 1 :(得分:1)

以下是使用JSON回复的一个示例。你真的不需要一个发送JSON的视图,你只需要一个回复:

public function buscarUsuario($Correo, $Contraseña) {
    $usuario = Usuario::find($Correo,$Contraseña)->toJson();
    $array = [ 'field1' => $usario->field1, 'field2' => $usario->field2 ];
    $statusCode = 200;
    $response = Response::json($array, $statusCode);
    return $response;
}

但是,您可以利用some packages out there,只要请求它就可以转换JSON。 This也是Phil Sturgeon撰写的一篇很棒的文章,讲述了变形金刚以及它们如何为你提供帮助,并提供了使用我链接的软件包的例子。

答案 2 :(得分:0)

如果要返回JSON输出,则不应使用View,而应使用特殊JSON Response。否则标头将不是json标头。 我不完全确定你的问题是什么,但我希望这个链接可以帮助你。

<?php
public function buscarUsuario($Correo, $Contraseña){
    $usuario = Usuario::find($Correo,$Contraseña)->toJson();
    return Response::json($usario);
}

答案 3 :(得分:0)

直接从控制器返回模型会将其转换为JSON,并将其作为JSON响应发送:

public function buscarUsuario($Correo, $Contraseña)
{
    $user = Usuario::whereEmail($Correo)->first();

    if ( $user && Hash::check($Contraseña, $user->password) )
    {
            return $user;
    }
}

这假设您的数据库列名为email&amp;分别为password。如果他们不同,请将其切换出来。

另外,我假设数据库中的密码是经过哈希处理的。如果他们不是(为什么???),只需将密码添加为另一个where查询:

public function buscarUsuario($Correo, $Contraseña)
{
    return Usuario::whereEmail($Correo)->wherePassword($Contraseña)->first();
}