当前位置: 首页 > 知识库问答 >
问题:

编辑配置文件未工作:/laravel 7

督翰学
2023-03-14

我有问题,当我想在Laravel编辑我的个人资料。单击按钮update profile时出现以下错误:
Symfony\Component\HttpKernel\Exception\MethodNotalLowedHttpException此路由不支持修补程序方法。支持的方法:GET、Head。http://127.0.0.1:8000/profile

edit.blade.php

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">
                    Update Profile
                </div>

                <div class="card-body">
                    <form method="POST" action="{{ route('profile.edit') }}">
                        @method('patch')
                        @csrf

                        <div class="form-group row">
                            <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name', $user->name) }}" autocomplete="name" autofocus>

                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="pseudo" class="col-md-4 col-form-label text-md-right">{{ __('pseudo') }}</label>

                            <div class="col-md-6">
                                <input id="pseudo" type="text" class="form-control @error('pseudo') is-invalid @enderror" name="pseudo" value="{{ old('pseudo', $user->pseudo) }}" autocomplete="pseudo" autofocus>

                                @error('pseudo')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email', $user->email) }}" autocomplete="email">

                                @error('email')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    Update Profile
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

web.php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});



Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('/chats', 'ChatController@index')->name('chats');
Route::get('/messages', 'ChatController@fetchAllMessages');
Route::get('/messages', 'ChatController@sendMessage');

Route::get('/contacts', 'ContactsController@get');
Route::get('/conversation/{id}', 'ContactsController@getMessagesFor');
Route::get('/conversation/send', 'ContactsController@send');


Route::group(['middleware' => 'auth'], function () {
    Route::get('profile', 'ProfileController@edit')->name('profile.edit');
});

配置文件控制器:


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller
{
    /**
     * Show the update profile page.
     *
     * @param  Request $request
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function edit(Request $request)
    {
        return view('profile.edit', [
            'user' => $request->user()
        ]);
    }
}

请有人帮助解决这个错误。我不明白问题出在哪里。

passwordchange.blade.php我创建这个页面是为了尝试更改密码是否有效,而在其他页面中也是有效的,但是当我在编辑配置文件中的一个页面中尝试时,没有成功。

@extends('layouts.app')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Laravel - Change Password with Current</div>
   
                <div class="card-body">
                    <form method="POST" action="{{ route('profile') }}">
                        @csrf 
   
                         @foreach ($errors->all() as $error)
                            <p class="text-danger">{{ $error }}</p>
                         @endforeach 
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">Current Password</label>
  
                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="current_password" autocomplete="current-password">
                            </div>
                        </div>
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">New Password</label>
  
                            <div class="col-md-6">
                                <input id="new_password" type="password" class="form-control" name="new_password" autocomplete="current-password">
                            </div>
                        </div>
  
                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">New Confirm Password</label>
    
                            <div class="col-md-6">
                                <input id="new_confirm_password" type="password" class="form-control" name="new_confirm_password" autocomplete="current-password">
                            </div>
                        </div>
   
                        <div class="form-group row mb-0">
                            <div class="col-md-8 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    Update Password
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection 

当我尝试在不同的页面中执行此操作时,我创建了其他页面changePassword.blade.php并且当我在此页面中更改密码时,它起作用了,当我尝试更新配置文件时,当我离开密码路由等时,它起作用了。它也起作用了,但是当我想在一个页面中更改所有内容时,我会出现这个错误

facade\ignition\exceptions\viewexception未定义变量:user(view:/home/mokoch/bureaus/projetaBonnementPayant/resources/views/profile/edit.blade.php)http://127.0.0.1:8000/profile

如果有人能帮我解决这个错误

共有2个答案

方宁
2023-03-14

问题在您的表单中您正在告诉Laravel这是一个带有这行的修补程序请求

@method('patch')

但在routes文件中,您只需要查找一个get方法

Route::get('profile', 'ProfileController@edit')->name('profile.edit');

如果您是作为修补程序发送,那么您将需要一条额外的线路

Route::patch('profile', 'ProfileController@update');

则需要在控制器中创建更新方法来处理保存逻辑

public function update(Request $request)
    {
        // Logic to update
    }
秋向阳
2023-03-14

您的路由中的这一行表示它仅是一个GET请求

Route::get('profile', 'ProfileController@edit')->name('profile.edit');

表单显示method=“post”

您可以将路由更改为“any”,这将允许get和post

Route::any('profile', 'ProfileController@edit')->name('profile.edit');
 类似资料:
  • 编辑网络配置文件 Docker 1.2.0 开始支持在运行中的容器里编辑 /etc/hosts, /etc/hostname 和 /etc/resolv.conf 文件。 但是这些修改是临时的,只在运行的容器中保留,容器终止或重启后并不会被保存下来,也不会被 docker commit 提交。

  • 我试图修改一个excel文件,但由于某种原因,我不理解cell.SetCellValue方法在我的代码中不起作用。我实际上正在做的是:-我正在打开一个excel文件,并将感兴趣的内容保存在一个HashMap中。这样工作,我可以打印HashMap的内容。-然后,我试图用保存在HashMap中的数据修改另一个excel文件,但由于某种原因,这没有发生。 请帮忙,谢谢!

  • 配置文件格式 # This is a simple example with comments. [bug_tracker] url = http://localhost:8080/bugs/ username = dhellmann ; You should not store passwords in plain text ; configuration files. password = S

  • 我正在经历一个问题。 XML编码 Java编码 我希望当我单击editText时,当前文本必须是dissapperar。但是当我单击 单击事件工作正常,但光标不再位于编辑文本处。这意味着如果要输入一些新文本,那么即使光标不在编辑文本,如何输入新文本,如果我使用 然后单击事件不起作用。但可用于任何新编辑。问题是什么?我知道这是个愚蠢的错误,但我不知道在哪里。提前感谢大家。

  • 配置文件分为用户级配置和项目级配置。 用户级配置包含用户的环境及 UI 相关的选项,包括: 用户选项 中的所有内容。 扩展工具,包括已配置的扩展列表。 其他工具中的UI相关选项,例如 Target 组件下 站点地图 的选定视图。 项目级配置包含在特定目标应用程序上执行的工作相关的选项,包括: 项目选项中的所有内容。 单个Burp工具中的非UI相关选项,例如 代理 (Proxy) 和 扫描器 (Sc

  • vi 可以在命令行下编辑文件。 vi 要编辑的文件路径 练习:编辑文件 vi ninghao-project/README.md 这样会打开要编辑的文件,使用方向键可以移动光标。 编辑 想要编辑按一下小 i ,这样会进入到 vi 编辑器的编辑模式。这时你可以编辑文件里的内容,修改完成以后,按 esc 可以退出编辑模式。 搜索 搜索文件里的内容可以按 / ,然后输入要搜索的关键词,n 继续查找,