【问题标题】:form method="POST" action?表单方法=“POST”动作?
【发布时间】:2020-01-22 09:59:10
【问题描述】:

登录的用户可以导航到 settings.blade.php 并查看他们当前的电子邮件、密码、姓名等。通过此表单,他们应该能够更新他们的电子邮件、密码、姓名等。

我有表单,它成功地从数据库中提取用户数据。现在,当用户更新(更改)表单字段(例如“名称”)时,我需要相应地更新数据库。我只是找不到 form method="POST" 操作应该是什么?

web.php

Route::get('settings', 'SettingsController@edit')->name('settings');
Route::post('settings/update', 'SettingsController@update')->name('settings_update');

setting.blade.php

This page has a form so that users can update their name and email. Form POST method is missing because everything I try is not working
 <form method="POST" action="WHAT GOES HERE?" enctype="multipart/form-data">

SettingsController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SettingsController extends Controller
{

    /**
     * Show the form for editing the specified resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function edit()
    {
        $user = auth()->user();
        return view('user_admin.settings', compact('user'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        $request->validate([
            'first_name' => 'required',
            'last_name' => 'required',
            'email' => 'required',
        ]);

        $user = auth()->user();
        $user->first_name =  $request->get('first_name');
        $user->last_name =  $request->get('last_name');
        $user->email =  $request->get('email');
        $user->about_me =  $request->get('about_me');
        $user->save();
        return redirect('settings')->with('success', 'Settings updated!');
    }
}

【问题讨论】:

  • 我想,但是怎么做?

标签: laravel


【解决方案1】:

只需按名称调用路线

<form method="POST" action="{{ route('settings_update') }}" enctype="multipart/form-data">

【讨论】:

  • 问题是,当我这样做时,我什至无法加载设置页面,我得到: Route [settings_update] 未定义。 (查看:C:\wamp64\www\sites\version2\resources\views\user_admin\settings.blade.php)。
【解决方案2】:

当我开始 laravel 时,我也遇到了这个问题,post 方法命名不起作用,然后我尝试如下代码:

Route::get('settings', 'SettingsController@edit')->name('settings'); Route::post('settings', 'SettingsController@update');

然后在刀片文件中你可以这样写,

<form method="POST" action="{{ route('settings') }}" enctype="multipart/form-data">


如果您需要更多帮助,请告诉我。

【讨论】:

  • 我也得出了同样的结论,但很高兴得到您的回复确认!一切正常,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多