【问题标题】:Laravel insert into mysql db from a controller functionLaravel 从控制器函数插入 mysql 数据库
【发布时间】:2018-05-27 03:16:46
【问题描述】:

我正在尝试使用 Laravel .blade.php 视图(php 表单)将记录提交到具有许多字段的 mysql 表中

我做了一些尝试,但我得到了

loginController.php 第 54 行中的 FatalErrorException:找不到类“App\Http\Controllers\Input”

Mysql

create table users(id int primary key auto_increment,username varchar(20),password varchar(20),createDate timestamp );

我的控制器功能

    public function formSubmit()
{
    if (Input::post())
    {
        $username = Input::get('username');
        $password = Input::get('password');


       DB::table('users')->insert(array ('username' => $username,'password' => $password));
       return View::make('view2')->with(array('username' =>$username, 'password' => $password));
    }
     }

view1.blade.php 表单

 <form action="{{url('/view2') }}" method="POST"> 
 {{ csrf_field() }} 

   <input type ="hidden" name="">  
  User name:  <input type ="text" name="username">  <br/>
  Password     <input type="password" name="password">  <br/>

              <input type="submit" name="formSubmit" value="formSubmit"> 
 </form>

路线

    Route::get('/view1', 'loginController@formSubmit');

【问题讨论】:

  • 您可以使用formSubmit(Request $request) 代替formSubmit(),然后$request-&gt;username 将包含您的用户名,$request-&gt;password 将包含您的密码
  • Route::get('/view1', 'loginController@formSubmit'); 应该是 Route::post('/view2', 'loginController@formSubmit'); 用于表单提交,并为 view1.blade.php 添加另一个路由,包含 return view('view1'); 的方法

标签: laravel laravel-5


【解决方案1】:

namespace 子句之后将use Input; 添加到类的顶部。

或者使用完整的命名空间:

$username = \Input::get('username');
$password = \Input::get('password');

或者您可以使用only() 方法从请求中获取数组:

DB::table('users')->insert(request()->only('username', password));

另外,切勿保存原始密码。使用bcrypt() 加密密码。

【讨论】:

  • 不幸的是,所有的建议都不适合我
  • @CodingBoy 我很确定这些解决方案都可以解决您显示的错误。你对每一个到底有什么错误?
  • 使用命名空间 App\Http\Controllers\input 时; loginController.php 第 11 行中的错误 FatalErrorException:找不到类 'App\Http\Controllers\input\Controller'
  • 当使用 DB::table('users')->insert(request()->only('username', password)); loginController.php 第 42 行中的错误 FatalErrorException:找不到类“App\Http\Controllers\Input”
  • and FatalErrorException in loginController.php line 11: Class 'App\Http\Controllers\input\Controller' not found when using $username = \Input::get('username'); $password = \Input::get('password');
【解决方案2】:

由于您使用的是 Laravel 5,因此请使用 Request Facade 并以这种方式访问​​ input

Request::input()

而不是使用 Input();

https://laravel.com/docs/5.0/requests

并且,以防万一,将其包含在控制器的顶部

use Illuminate\Support\Facades\Request;

【讨论】:

    【解决方案3】:

    参考 Amarnasan 的答案,我使用了 request 并包括 use Illuminate\Http\Request;在我的控制器的顶部。

    所以我将控制器方法更改为

      public function formSubmit(Request $req)
    {
    
              $username =$req->input('username');
             $password =$req->input('password');
    
           DB::table('users')->insert(array ('username' => $username,'password' => $password));
           return view ('view2')->with(array('username' =>$username, 'password' => $password));
    
         }
    
    }
    

    我根据 Shubham pokhriyal 的承诺更改了路线:

    Route::post('/view2', 'loginController@formSubmit');
    Route::get('view1',function()
    {
    return view('view1');   
    }
    );
    

    而且效果很好。

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2021-08-15
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多