laravel 将数据从刀片文件传递到控制器
Posted
技术标签:
【中文标题】laravel 将数据从刀片文件传递到控制器【英文标题】:laravel pass data from blade file to Controller 【发布时间】:2016-06-25 13:56:52 【问题描述】:我正在尝试将用户输入到表单中的数据、在刀片中创建的数据传输到我的控制器。那时我可以使用控制器中的函数将数据写入 mysql。
这是我的刀片文件中的表单代码。
<form action=" route("users") " method="post">
<input type ="form" id="firstname"> firstname </input> <br>
<input type ="form" id="lastname"> lastname </input> <br>
<input type="form" id="email"> email </input> <br>
<input type="form" id="userlevel"> userlevel </input> <br>
<input type="form" id="password"> password </input> <br>
<br> <br>
<button type="submit"> Submit
</button>
</form>
这是我的控制器中将数据写入 MySQL 的代码。当我使用虚拟数据而不是 $name
和 $lastname
变量时,该代码有效。
public function users()
$name = $_POST["firstname"];
$lastname = $_POST["lastname"];
DB :: table("newUsers") -> insertGetId
(
array("firstname" => $name, "lastname" => $lastname, "email" => "test")
);
return view("pages.users");
我目前收到一条错误消息,提示
未定义索引:名字
理想情况下,我希望将用户输入的名字和姓氏写入我的 MySQL 表中。
【问题讨论】:
【参考方案1】:您需要在输入中添加name
属性并正确格式化它们,它们应该看起来更像:
<input type="text" id="firstname" name="firstname"></input>
如果您在打开和关闭输入标记之间放置“名字”以获取占位符值,请改用占位符属性。
<input type="text" id="firstname" name="firstname" placeholder="first name"></input>
但请注意,占位符属性在 older browsers 中不起作用
也不要使用$_POST
laravel 内置了从表单中获取值的方法。
Laravel 5
$request->input('firstname');
像这样:
public function users(Request $request)
$name = $request->input('firstname'); // This is better than using $_POST
$lastname = $request->input('lastname');
DB :: table("newUsers") -> insertGetId
(
array("firstname" => $name, "lastname" => $lastname, "email" => "test")
);
return view("pages.users");
注意,我已经像users
方法中的变量一样传入了Request $request
。您还需要将use Illuminate\Http\Request as Request;
添加到班级顶部:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request as Request; //here
class MyController extends Controller
Laravel 4
Input::get('firstname');
【讨论】:
【参考方案2】:如下更改您的表单:
<form action=" route("users") " method="post">
<input type ="form" name=firstname" id="firstname" placeholder="First name">
<input type ="form" name=lastname" id="lastname">
<input type="form" name="email" id="email">
<button type="submit"> Submit </button>
</form>
您必须为表单字段提供name
属性。
并且在控制器中,您不必再使用$_POST
。
只需使用:
public function users(Request $request)
$firstname = $request->input('firstname');
$lastname = $request->input('lastname');
DB :: table("newUsers") -> insertGetId(
array("firstname" => $name, "lastname" => $lastname, "email" => "test")
);
return view("pages.users");
【讨论】:
【参考方案3】:例如,您可以使用$request->get('first_name')
访问表单数据。
要使其工作,请将name
标签添加到您的表单inputs
并捕获数据,例如,如果您使用存储操作:
function store(Request $request)
在这种情况下,您还可以easily
使用自定义 Reuqest 类验证输入数据:
https://laravel.com/docs/master/validation#form-request-validation
【讨论】:
以上是关于laravel 将数据从刀片文件传递到控制器的主要内容,如果未能解决你的问题,请参考以下文章
在 laravel 中使用 ajax 从控制器刀片文件中传递搜索数据时遇到问题