我想显示不同的输出 - JSON 或 HTML。
我无法使用\Request::ajax()
功能,因为我只是收到正常请求(JSON 响应不是基于 XHR 请求)。
是否有可能区分不同路线的输出?例如。检查控制器是否由前缀为“mob”的路由调用,然后根据该路由为输出创建一个开关?
应用程序/Http/routes.php:
Route::group( ['prefix' => 'api'], function( ) {
Route::resource( 'activation', 'ActivationController' );
//...
}
Route::group( ['prefix' => 'mob'], function( ) {
Route::resource( 'activation', 'ActivationController' );
//...
}
应用程序/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);
}
}
//...
我愿意接受务实且简单的解决方案。一定不是路线解决方案,而是一种我不必更改太多代码的方法。
您可以使用接受通配符/占位符的 Request::is() 方法。
所以你可以这样做:
if($request->is('mob/*')) {
// do your mob response
} else {
// do the other response
}
如果每次执行响应时都有这个,那么您可以编写一个自定义响应宏来处理 if 并将数据作为数组并将其返回为 json 或将其提供给您的刀片视图。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)