【发布时间】:2015-12-10 23:10:39
【问题描述】:
我想显示不同的输出 - JSON 或 HTML。
我无法使用\Request::ajax() 功能,因为我只是收到正常请求(JSON 响应不是基于 XHR 请求)。
是否有可能通过不同的路线区分输出?例如。检查控制器是否被带有前缀“mob”的路由调用,然后根据它为输出创建一个开关?
app/Http/routes.php:
Route::group( ['prefix' => 'api'], function( ) {
Route::resource( 'activation', 'ActivationController' );
//...
}
Route::group( ['prefix' => 'mob'], function( ) {
Route::resource( 'activation', 'ActivationController' );
//...
}
app/Http/Controllers/ActivationController:
<?php namespace App\Http\Controllers;
use App\Activation;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class ActivationController extends Controller {
public function index()
{
$activation = Activation::all( );
// switch to decide which output to show, based on the routes...
if ($prefix == "mob") {
return response()->view('template', compact($activation)); // not sure if it works this way
} else {
return response()->json($activation);
}
}
//...
我愿意接受务实且简单的解决方案。一定不是路由解决方案,而是一种我不必更改太多代码的方式。
【问题讨论】:
-
您可以在此question 上使用已接受的答案。只需编辑中间件,使其不检查输入中的
contentType。
标签: php laravel view routes laravel-5