php - Laravel 从视图中的表单填充数据库表并将其显示在同一视图中
问题描述
我是 Laravel 框架的新手,我正在尝试构建一个工具来管理数据库。我已经创建了我的表格并且我设法从视图中填充它,我没有得到的是将表格显示回视图。我构建了两个函数,一个只显示表单'Project_create@showpform'
,另一个应该使用插入的数据更新同一个视图'Project_create@showtable'
。我收到错误:"Undefined variable: project_data (View:/var/www/tcc/src/resources/views/form_project.blade.php)"
。
在这里你可以看到我的路线:
Route::get('/', 'DataController@overview');
Route::get('/myproject', 'Project_create@showpform');
Route::post('/myproject', 'Project_create@showtable');
Route::get('/upload','DataController@showform');
Route::post('/upload', 'DataController@read_xsl');
Route::get('/scrape', 'DataController@scrape');
这是我的Project_create
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
class project_create extends Controller
{
public function showpform()
{
return view('form_project');
}
public function showtable(Request $request)
{
$name = $request->input('name');
$description = $request->input('description');
\DB::table('projects')->insert(
[
'project_id' => 1,
'name' => $rawUrl,
'description' => $hashedUrl,
'created_at' => \Carbon\Carbon::now(),
]);
$project_data = \DB::table('projects')->select('*')->get();
return View::make('form_project', compact('project_data'));
}
}
这是我的观点:
<html lang="en">
<head>
<title>File Upload</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
</head>
<body>
<div class="container">
<h3 class="jumbotron">Create here your project</h3>
<form class="w3-container w3-light-grey" action={{action('DataController@showform')}} enctype="multipart/form-data">
{{csrf_field()}}
<p>
<label>Project Name</label>
<input class="w3-input w3-border w3-round" name="name" type="text"></p>
<p>
<label>Project Description</label>
<input class="w3-input w3-border w3-round" name="description" type="text"></p>
<button type="submit" class="btn btn-primary" style="margin-top:10px">Create Project</button>
</form>
</div>
<table>
<thead>
<tr>
<th> id</th>
<th> name</th>
<th> description</th>
<th> created_at </th>
</tr>
</thead>
<tbody>
@foreach($project_data as $data)
<tr>
<td> {{$data->id}} </td>
<td> {{$data->name}} </td>
<td> {{$data->description}} </td>
<td> {{$data->created_at}} </td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
谢谢您的帮助。
解决方案
你的观点有这条线
@foreach($project_data as $data)
但是当你打电话时
public function showpform()
你没有通过
$project data
像
public function showtable(Request $request)
……
return View::make('form_project', compact('project_data'));
在 Blade 文件中添加isset
函数。例如
@if(isset($project_data))
@foreach($project_data as $data)
<tr>
<td> {{$data->id}} </td>
<td> {{$data->name}} </td>
<td> {{$data->description}} </td>
<td> {{$data->created_at}} </td>
</tr>
@endforeach
@endif
推荐阅读
- c# - C# Await 似乎没有等待 Http 服务器响应
- python - 使用 Python 进行线程化
- string - 将字符串拆分为多个变量
- python - 从 SQL 查询生成 plotly DataTable
- r - 如何使用 igraph 中的 Cytoscape
- python - 遍历python中的列表
- javascript - 如何在滚动后使用 jquery 检测精确的偏移量 top()?
- python - 检查输入时出错:预期 conv2d_17_input 有 4 个维度,但得到了形状为 (28, 28, 1) 的数组
- flutter - 收集侦听器的 Firestore 计费
- xml - XSD 中元素的复杂值和该元素的属性的同时“完全”描述