使用 php 和 laravel 显示表单数据

Posted

技术标签:

【中文标题】使用 php 和 laravel 显示表单数据【英文标题】:Displaying form data with php and laravel 【发布时间】:2015-07-04 17:10:40 【问题描述】:

您好,我正在尝试将表单数据存储在数据库中,然后将该数据显示为网页上的对象。然后我希望能够编辑该对象的数据并使用新信息更新数据库。

喜欢博客/facebook 上的 cmets/post 部分

感谢您提供的任何帮助/我目前拥有的具体信息如下。我正在使用 laravel 4.2 和 sqlite 来管理一切。我认为问题出在我的路线上。

祝你有美好的一天。

这是我的目录布局

- app

-- database
---posts.sql
---comments.sql

-- views
--- layouts
------- default.blade.php
--- pages
------- home.blade.php
------- edit.blade.php
--- includes
------- head.blade.php
------- header.blade.php
------- footer.blade.php

--routes.php

我目前有两个数据库正在尝试与添加/编辑/删除行进行交互。

两者都遵循这种格式

/* Posts database in SQLite. */
drop table if exists posts;

create table posts (
  id integer primary key autoincrement,
  number int, /* 0 = subsequent term */
  post_username varchar(40) not null,
  post_title varchar(40),
  post varchar(140)
);

/* Column names changed to avoid SQLite reserved words. */

insert into posts(number, post_username, post_title, post) values (1,'First Poster', 'first title', 'first');
insert into posts(number, post_username, post_title, post) values (2,'Second Poster', 'second title', 'second post');
/* Sample query to test insertion worked. */

select * from posts
where post_title like "%first%"
order by id;

我希望能够使用类似的表格在主页上的 .sql 文件中显示当前信息,同时还可以使用新表单添加到页面中。

@section('title') Home Page
@stop

@extends('layouts.default')
@section('content')


<form class="form-horizontal">
<fieldset>


<!-- Form Name -->
  <form method="get" action="add_post">
  <table>
    <tr><td>Post Username: </td><td><input type="text" name="post_username"></td></tr>
    <tr><td>Post Title: </td><td><input type="text" name="post_title"></td></tr>
    <tr><td>Post: </td><td><input type="text" name="post"></td></tr>
    <tr><td colspan=2><input type="submit" value="add_post">
                      <input type="reset" value="Reset"></td></tr>
  <table>
  </form>
  
@if (count($posts) == 0)

<p>No Current Posts</p>
  
  <table class="bordered">
  <thead>
    <tr><th>No.</th><th>Post Username</th><th>Post Title</th><th>Post</th></tr>
  </thead>
<tbody>
  
@foreach($posts as $post)

  <tr><td> $post->number </td><td> $post->post_username </td><td> $post->post_title </td><td> $post->post </td></tr>

@endforeach  

@stop

但它不起作用我不知道为什么。

请帮助那些学习了网络编程课程并且刚刚意识到错误的多媒体书呆子:)

路线页面:

<?php

  $post_username = Input::get('post_username');
  $post_title = Input::get('post_title');
  $post = Input::get('post'); 
  
Route::get('/', function()

return View::make('pages.home');
);

Route::get('/comments', function()

return View::make('pages.comments');
);

/*
 Currently crashing website
Route::get('add_post', function()

  $sql = "insert into posts (post_username, post_title, post) values (?, ?, ?)";
  DB::insert($sql, array($post_username, $post_title, $post));
);

*/

【问题讨论】:

【参考方案1】:

将您的路线更改为:

<?php

Route::get('/', function()

return View::make('pages.home');
);

Route::get('/comments', function()

return View::make('pages.comments');
);

// Currently crashing website
Route::get('add_post', function()

  $post_username = Input::get('post_username');
  $post_title = Input::get('post_title');
  $post = Input::get('post'); 

  $sql = "insert into posts (post_username, post_title, post) values (?, ?, ?)";
  DB::insert($sql, array($post_username, $post_title, $post));
);

并且,您应该在控制器中编写而不是在路由中执行保存逻辑。有一些很好的教程,比如Laracast 和Culttt,请访问它们并改变你的方法。看看,是否有帮助。

【讨论】:

您好,感谢您的回复,但这仍然没有向数据库添加任何内容。 你在database.php文件中添加了数据库连接对应的必填字段吗? 在控制器文件夹下? 别在controller里面做,app/config文件夹里有个文件叫database.php,更新一下吧。 很抱歉一直打扰你,但我真的不知道我在看什么。有一个语句'default' => 'sqlite',这就是我所追求的吗?

以上是关于使用 php 和 laravel 显示表单数据的主要内容,如果未能解决你的问题,请参考以下文章

发送序列化的表单数据并接收带有表单和会话数据的 PHP Laravel 重定向

Laravel 5,单击表单提交按钮时不显示任何内容

即使没有表单字段,Laravel 也会显示验证错误?

八PHP框架Laravel学习笔记——表单伪造和 CSRF 保护

表单提交后,在 laravel 中向用户显示提交的数据

Laravel 使用 href 提交删除表单