laravel 将数据从 blade 文件传递到控制器
laravel pass data from blade file to Controller
我正在尝试将用户输入到在 blade 中创建的表单中的数据传输到我的控制器。那时我可以在我的控制器中使用一个函数将数据写入 MySQL。
这是我 blade 文件中的表单代码。
<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");
}
我目前收到一条错误消息
Undefined index: firstname
理想情况下,我希望将用户输入的名字和姓氏写入我的 MySQL table。
您需要将 name
属性添加到您的输入并正确设置它们的格式,它们应该看起来更像:
<input type="text" id="firstname" name="firstname"></input>
如果您将 'firstname' 放置在占位符值的开始和结束输入标签之间,请改用占位符属性。
<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;
添加到 class:
的顶部
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request as Request; //here
class MyController extends Controller
{
}
Laravel 4
Input::get('firstname');
按如下方式更改您的表格:
<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");
}
例如,您可以使用 $request->get('first_name')
访问表单数据。
要使其正常工作,请将 name
标签添加到您的表单 inputs
并捕获数据,例如,如果您使用商店操作:
function store(Request $request){
}
在这种情况下,您还可以 easily
使用自定义 Reuqest 类 验证输入数据:
https://laravel.com/docs/master/validation#form-request-validation
我正在尝试将用户输入到在 blade 中创建的表单中的数据传输到我的控制器。那时我可以在我的控制器中使用一个函数将数据写入 MySQL。
这是我 blade 文件中的表单代码。
<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");
}
我目前收到一条错误消息
Undefined index: firstname
理想情况下,我希望将用户输入的名字和姓氏写入我的 MySQL table。
您需要将 name
属性添加到您的输入并正确设置它们的格式,它们应该看起来更像:
<input type="text" id="firstname" name="firstname"></input>
如果您将 'firstname' 放置在占位符值的开始和结束输入标签之间,请改用占位符属性。
<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;
添加到 class:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request as Request; //here
class MyController extends Controller
{
}
Laravel 4
Input::get('firstname');
按如下方式更改您的表格:
<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");
}
例如,您可以使用 $request->get('first_name')
访问表单数据。
要使其正常工作,请将 name
标签添加到您的表单 inputs
并捕获数据,例如,如果您使用商店操作:
function store(Request $request){
}
在这种情况下,您还可以 easily
使用自定义 Reuqest 类 验证输入数据:
https://laravel.com/docs/master/validation#form-request-validation