Reputation: 4896
I am trying to response a json with the json array in Laravel5
namespace App\Http\Controllers;
use Illuminate\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Event;
class EventsapiController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$events = Event::All();
return Response::json([
'data'=>$events
],200);
}
}
Its giving me this error
Call to undefined method Illuminate\Http\Response::json() in Laravel5
So how do we pass json in Laravel 5 ? , I Already know laravel returns automatically json array but I don't want to do that
Thanks
Upvotes: 18
Views: 56866
Reputation: 604
If you return data, you simply return an array from your controller method, it will render as JSON. You can return
return [
'status' => true
'data' => events
];
Or Use Helper Function:
return response()->json([''status' => true, data'=>$events]);
Upvotes: 0
Reputation: 14067
You are using:
Illuminate\Http\Response
and should use this instead:
\Response
Type:
use Response;
Don't type:
use Illuminate\Http\Response;
Upvotes: 19
Reputation: 8350
Try the helper function:
return response()->json(['data'=>$events]);
See the docs in \Illuminate\Routing\ResponseFactory:
/**
* Return a new JSON response from the application.
*
* @param string|array $data
* @param int $status
* @param array $headers
* @param int $options
* @return \Illuminate\Http\JsonResponse
*/
public function json($data = [], $status = 200, array $headers = [], $options = 0)
{
if ($data instanceof Arrayable && ! $data instanceof JsonSerializable) {
$data = $data->toArray();
}
return new JsonResponse($data, $status, $headers, $options);
}
Upvotes: 19