【发布时间】:2021-05-15 15:19:56
【问题描述】:
由于我是 Laravel 的新手,所以我遇到了一个非常复杂的问题。
我有这样的控制器文件 ApiHandlerController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use GuzzleHttp\Client;
class ApiHandlerController extends Controller
{
//
public function index()
{
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'http://jsonplaceholder.typicode.com/todos',
]);
$response = $client->request('GET', '/todos');
//get status code using $response->getStatusCode();
$body = $response->getBody();
$arr_body = json_decode($body);
return view('myview', $arr_body);
}
}
?>
myview.blade.php 作为视图文件:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Todo</title>
<link rel="shortcut icon" type="image/x-icon" href="icon.ico">
<meta name="description" content="HTML, PHP, JSON, REST API">
<style>table, th, td {border: 1px solid black;}</style>
</head>
<body>
<table style="width:100%"; class="data-table">
<tr>
<th>User ID:</th>
<th>ID:</th>
<th>Title:</th>
<th>Completed</th>
</tr>
<?php foreach ($arr_body as $value) { ?>
<tr>
<td><?php echo $value -> userId ?> </td>
<td><?php echo $value -> id ?> </td>
<td><?php echo $value -> title ?> </td>
<td><?php echo $value -> completed ?> </td>
</tr>
<?php } ?>
</table>
和 web.php 文件与路由:
Route::get('myview', function () {
return view('myview');
});
我的问题是:
如何在这个刀片(视图)文件中显示来自 jsonplaceholder.typicode.com 的待办事项结果? 目前,这是不可能的,每次我尝试都是一个错误:
错误异常 未定义变量:arr_body(查看:C:\xampp\htdocs\TodoList\resources\views\myview.blade.php) 提前谢谢你们!
【问题讨论】:
-
你的路由没有使用控制器(顺便说一句,它看起来不像一个“有效”的 Laravel 控制器),它只返回一个视图。
-
@brombeer 好吧,当我们谈论路线时,首先有什么解决方案?
-
The Default Route Files 有关于如何在路由中使用控制器的示例,基本上类似于
Route::get('/user', [UserController::class, 'index']);。 或者,您可以在路由中的function()中使用您的控制器代码
标签: php laravel model-view-controller