Php 在Laravel 5中创建新表单并提交

Php 在Laravel 5中创建新表单并提交,php,twitter-bootstrap,laravel,Php,Twitter Bootstrap,Laravel,我希望澄清使用Laravel 5.2和Bootstrap 3将新表单正确提交到数据库的步骤 我使用Laravel的默认设置正确设置了登录/注册页面,它们工作正常。我现在想创建一个可供经过身份验证的用户访问的用户配置文件页面。我使用数据库中的一行作为他们所有的用户信息。在注册过程中填写了一些字段,现在我希望它们可以访问其他字段(同时限制对某些注册字段(如用户名)的访问) 在下面的示例代码中,有用于上载个人照片、输入名字和姓氏的字段。(这些都不是在注册期间完成的。) 我已经做了什么(所有代码如下):

我希望澄清使用Laravel 5.2和Bootstrap 3将新表单正确提交到数据库的步骤

我使用Laravel的默认设置正确设置了登录/注册页面,它们工作正常。我现在想创建一个可供经过身份验证的用户访问的用户配置文件页面。我使用数据库中的一行作为他们所有的用户信息。在注册过程中填写了一些字段,现在我希望它们可以访问其他字段(同时限制对某些注册字段(如用户名)的访问)

在下面的示例代码中,有用于上载个人照片、输入名字和姓氏的字段。(这些都不是在注册期间完成的。)

我已经做了什么(所有代码如下):

  • 创建视图profile.blade.php
  • 创建控制器profileController.php
  • 更新控制器目录中的routes.php
  • 注:

  • 当我尝试按如下所示提交表单时,我得到,类型错误:传递给App\Http\Controllers\ProfileController::update()的参数1必须是数组类型,没有给定
  • 要使此页面正常工作,接下来需要执行哪些步骤

    profile.blade.php:

    @extends('layouts.app'))
    @节(“内容”)
    用户配置文件
    请上传一张照片。。。
    {!!csrf_field()!!}
    名字:
    
    这是协议不匹配,因为您正在发布表单。你需要改变你去的路线

    route::post('/profile', 'ProfileController@index');
    
    使用验证器是一个好主意,因为它将确保您的输入完全符合您的需要,并且所有必填字段都已填写

    您的更新函数应该如下所示:

    public function update(Request $request)
    {
        $first_name = $request->input('firstname');
        $last_name = $request->input('lastname');
        $id = Auth::user()->id;
        $user = \App\User::find($id);
        $user->firstname = $first_name;
        $user->lastname = $last_name;
        $user->save();
        return view('profile');
        // Sanitize, validate, before you do ANYTHING with update
        // Instead of returning the update result, you can instead show another view or forward them to another page.
    }
    

    这是协议不匹配,因为您正在发布表单。你需要改变你去的路线

    route::post('/profile', 'ProfileController@index');
    
    使用验证器是一个好主意,因为它将确保您的输入完全符合您的需要,并且所有必填字段都已填写

    您的更新函数应该如下所示:

    public function update(Request $request)
    {
        $first_name = $request->input('firstname');
        $last_name = $request->input('lastname');
        $id = Auth::user()->id;
        $user = \App\User::find($id);
        $user->firstname = $first_name;
        $user->lastname = $last_name;
        $user->save();
        return view('profile');
        // Sanitize, validate, before you do ANYTHING with update
        // Instead of returning the update result, you can instead show another view or forward them to another page.
    }
    

    谢谢你的快速回复。当我进行更改时,我会收到与以前相同的错误消息,但现在我是在尝试访问配置文件页面而不是单击提交按钮时收到的。也许Laravel需要get路线来进行其他操作。我尝试使用原始get访问页面,然后切换到post提交表单,但没有将数据输入数据库中的字段。还有其他我遗漏的中间步骤吗?例如,我还不知道我的表单如何知道如何访问正确的表。我需要告诉它在什么地方使用哪个表吗?如果你想使用相同的路径,请创建两个路由:一个用于指向加载函数的GET路由,然后是一个用于处理数据的POST路由。我将用你应该拥有的更新函数来更新我的答案。看起来应该是请求。是否在用户类中创建了单独的更新函数?您可能只需要实例化用户($user=user::find($id_of_the_user)),然后更新字段并保存。这可能不是刷新用户。与其返回视图,不如将其重定向回配置文件页面。
    return redirect()->to(/profile'))
    感谢您的快速响应。当我进行更改时,我会收到与以前相同的错误消息,但现在我在尝试访问配置文件页面而不是单击“提交”按钮时收到了错误消息。也许Laravel需要获取路径来执行其他操作。我尝试使用原始获取来访问页面,然后切换到post以提交表单,它没有将数据输入数据库中的字段。是否缺少其他中间步骤?例如,我还不知道我的表单如何知道如何访问正确的表。我是否需要告诉它要在某处使用哪个表?如果要使用相同的路径,请创建两个路由:一个用于获取的路由,指向加载函数n、 然后是一个处理数据的POST路径。我将用你应该拥有的更新函数来更新我的答案。看起来请求就是一个方法。你有在用户类中创建的单独的更新函数吗?你可能只需要实例化用户($User=User::find($id\u of the\u User),然后更新字段并保存。这可能不会刷新用户。与其返回视图,不如将其重定向回配置文件页面。
    return redirect()->to(/profile');