blainesch/laravel-pretty-controller

此包的最新版本(0.0.1)没有可用的许可证信息。

0.0.1 2014-06-09 04:37 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:30:30 UTC


README

Build Status

此库提供有用的内容协商。例如,如果您从典型的Laravel网站请求JSON返回,您仍然会得到HTML返回。我仔细查看Accept头和type(例如.json)以最佳确定要渲染的媒体类型。

这意味着什么?这意味着您的控制器操作更干净,您只需返回值即可!

class UserController extends BaseController {
	public function show()
	{
		return View::make('user.show')->with([
			'name' => 'BlaineSch',
		]);
	}
}

现在,让我们响应多种内容类型并美化我们的控制器!

class UserController extends BaseController {
	public function showAction()
	{
		return ['name' => 'blainesch'];
	}
}

安装

Composer

'require': {
	"blainesch/laravel-pretty-controller": "0.0.1"
}

更新Controller并在您的app/config/app.php文件中添加CoreController值。

'aliases' => [
	// ...
	'Controller'      => 'Blainesch\LaravelPrettyController\Action\PrettyController',
	'CoreController'  => 'Illuminate\Routing\Controller',
	// ...
]

注册您的媒体类型

创建一个bootstrap/media.php

<?php

use Blainesch\LaravelPrettyController\Http\MediaType;

MediaType::add('html', [
	'conditions' => [
		'accept' => [
			'text/html',
			'*/*',
		],
	],
	'encode' => function($request, $response) {
		$class = strtolower(str_replace('Controller', '', $request['controller']));
		return \View::make("{$class}.{$request['method']}")->with($response);
	},
]);

MediaType::add('json', [
	'conditions' => [
		'type' => 'json',
		'accept' => [
			'application/json',
			'application/x-json',
		],
	],
	'encode' => function($request, $response) {
		return json_encode($response);
	},
]);

在Composer自动加载器下方将此文件包含在bootstrap/autoload.php

require __DIR__.'/media.php';