从Laravel应用程序中的html输入获取值以发送到mysql数据库?

问题描述:

I just started learning Laravel and would like to make a dummy Account Manager. My first goal is to be able to add accounts to the mysql db via an html form/Eloquent model/controller/migration. Coming from JavaScript, I'm not really sure how to pass the data from the name or value attr to the correct method and on to the migration. Here's my code from the form:

<form method="POST" action="/addAccount">
    {{ csrf_field() }}
    <input class="inputs" type="text" name="fname" placeholder="First Name">
    <input class="inputs" type="text" name="lname" placeholder="Last Name">
    <input class="inputs" type="email" name="email" placeholder="Email">
    <h3>Account Types and ID's:</h3>
    <ul class="list">
        <li>Confirmation: 1</li>
        <li>Setup: 2</li>
        <li>Activated: 3</li> 
        <li>Deactivated: 4</li>
    </ul>
    <input class="inputs" type="number" name="ati" placeholder="Enter Account Type ID">
    <input class="inputs" type="checkbox" name="active"><p>Click to Activate!</p>
    <button class="button">Submit</button>
  </form>

web.php: Route::post('addAccount', 'AccountsController@store');

Code for AccountsController:

public function store(Request $request)
{

    $accounts = new Account;
    $accounts->first_name = $fname;
    $accounts->last_name = $lname;
    $accounts->email = $email;
    $accounts->account_type_id = $ati;
    $accounts->active = $active;

    $accounts->save();

    return redirect('/');
}

Currently getting an ErrorException of "Undefined variable: fname". Any hints would be greatly appreciated!

我刚刚开始学习Laravel并希望成为一名虚拟客户经理。 我的第一个目标是能够通过html表单/ Eloquent模型/控制器/迁移向mysql数据库添加帐户。 来自JavaScript,我不确定如何将数据从名称或值attr传递给正确的方法并转移到迁移。 这是表格中的代码: p>

 &lt; form method =“POST”action =“/ addAccount”&gt; 
 {{csrf_field()}} 
&lt;  input class =“inputs”type =“text”name =“fname”placeholder =“First Name”&gt; 
&lt; input class =“inputs”type =“text”name =“lname”placeholder =“姓氏”  &gt; 
&lt; input class =“inputs”type =“email”name =“email”placeholder =“Email”&gt; 
&lt; h3&gt;帐户类型和ID:&lt; / h3&gt; 
&lt; ul  class =“list”&gt; 
&lt; li&gt;确认:1&lt; / li&gt; 
&lt; li&gt;设置:2&lt; / li&gt; 
&lt; li&gt;已激活:3&lt; / li&gt;  
&lt; li&gt;已停用:4&lt; / li&gt; 
&lt; / ul&gt; 
&lt; input class =“inputs”type =“number”name =“ati”placeholder =“输入帐户类型ID”&gt;  
&lt; input class =“inputs”type =“checkbox”name =“active”&gt;&lt; p&gt;点击激活!&lt; / p&gt; 
&lt; button class =“button”&gt;提交&lt; / 按钮&gt; 
&lt; / form&gt; 
  code>  pre> 
 
 

web.php: Route :: post('addAccount','AccountsController @ store'); p>

AccountsController代码: p>

 公共函数存储(请求$请求)
 {
 
 $ accounts = 新帐户; 
 $ accounts-&gt; first_name = $ fname; 
 $ accounts-&gt; last_name = $ lname; 
 $ accounts-&gt; email = $ email; 
 $ accounts-&gt; account_type_id = $ ati  ; 
 $ accounts-&gt; active = $ active; 
 
 $ accounts-&gt; save(); 
 
返回redirect('/'); 
} 
  code>  pre  > 
 
 

目前正在获取“Undefined variable:fname” code>的ErrorException。 任何提示将不胜感激! p> div>

You just need to use

$request->fname

instead of

$fname

In your form, please add :

{{ csrf_field() }}

Laravel checks if a form has a token to protect the application from CSRF attack. See link for more details. CSRF Protection

Also, add a name attr in your input types like so:

<input class="inputs" type="text" name="fname" placeholder="First Name">

In your web.php :

Route::post('addAccount', 'controllerName@controllerFunction');

In your controller:

function controllerFunction(Request $request){
   //$request contains all sent data.
   $fname= $request->input('fname'); #you can use this way
   $fname = $request->fname; #or this one

   ....

   //code for storing in DB using Eloquent

   $users= new Users;
   $users->first_name = $fname;
   ....

   $users->save();
}

Please check the document for using Laravel Eloquent