laravel将数据从刀片文件传递到Controller

时间:2016-03-10 15:55:06

标签: php html mysql laravel blade

我正在尝试将用户输入的数据转换为在刀片中创建的表单,并将该数据传输到我的控制器。此时我可以使用控制器中的函数将数据写入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");
}

我目前收到的错误是

  

未定义索引:名字

理想情况下,我想要发生的是用户输入的firstname和lastname写入我的MySQL表。

3 个答案:

答案 0 :(得分:3)

您需要在输入中添加name属性并正确格式化它们应该看起来更像:

<input type="text" id="firstname" name="firstname"></input>

如果要在placholder值的打开和关闭输入标记之间放置“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");
}

注意,我已经像方法Request $request中的变量那样传递了users。您还需要将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');

答案 1 :(得分: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");
 }

答案 2 :(得分:0)

例如,您可以使用$request->get('first_name')访问表单数据。

要使其正常运行,请将name标记添加到表单inputs并捕获数据,例如,如果您使用商店操作:

function store(Request $request){

}

在这种情况下,您还可以easily使用自定义Reuqest类验证输入数据: https://laravel.com/docs/master/validation#form-request-validation