我想顯示不同的輸出 - JSON或HTML。laravel 5根據路線返回HTML或JSON
我不能使用\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 /控制器/ 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);
}
}
//...
我打開務實,簡單的解決方案。一定不能是路線解決方案,而是一種我不需要更改代碼的方法。
你可以使用公認的答案:在[提問](HTTP:// stackoverflow.com/questions/32383038/sending-html-or-json-response-depending-on-the-client/32385528#32385528)。只需編輯中間件,以便它不檢查輸入中的「contentType」。 – BrokenBinary