【问题标题】:Apps route redirecting the wrong URL应用程序路由重定向错误的 URL
【发布时间】:2020-09-05 19:12:26
【问题描述】:

-----平台 Laravel 7x。 --------

我遇到了一个简单的问题。我找不到错误。当我更新表单时,它会重定向到我不想要的错误 URL,并且数据不会更新。

表单操作网址:

 method="POST" action="{{'city/update/'. $editCity->id}}"

form image

路线:

Route::post('city/update/{id}','Admin\CityController@update');

web route

来自控制器的功能:

public function update(Request $request, $id)
    {
        $editCity=City::find($id);
        $editCity->city_name=$request->city_name;
        $editCity->save();
        return redirect()->back();
    }

function from controller

当我单击更新时,它会转到此 URL 并显示我不想要的 404 错误: public/panel/city/edit/city/update/33

帮我找出问题出在哪里我做错了。当我点击更新按钮并返回时,我想让它更新。

【问题讨论】:

    标签: laravel laravel-7 laravel-controller laravel-route laravel-formrequest


    【解决方案1】:

    改用名称路由。 所以你的代码看起来像:

    blade.php

    method="POST" action="{{ route('city.update',  $editCity->id) }}"
    

    web.php

    Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
    

    【讨论】:

    • 现在它显示编辑页面错误,错误:Facade\Ignition\Exceptions\ViewException Missing required parameters for [Route: city.update] [URI: panel/city/update/{id}]。 (查看:D:\xampp\htdocs\tolethunt\resources\views\admin\editCity.blade.php)
    • 谢谢,伙计。有用。你能告诉我没有名字路线我在哪里做错了吗?我想学习。
    • 你的错误似乎是这样的:method="POST" action="{{ url('city/update/'. $editCity->id) }}"希望这也有效
    • 你也可以试试这个:method="POST" action="/city/update/{{ $editCity->id }}"希望你理解。祝你有美好的一天
    【解决方案2】:

    如果您的 CityController 是资源控制器,您应该尝试以下方法:

    Route: web.php
    
    Route::resource('city', 'Admin\CityController');   
    
    Form: HTML
    
    <form action="{{route('city.update',$editCity->id)}}" method="post">
    
    Controller: CityController.php
    
    public function update(Request $request, $id)
        {
            $editCity=City::find($id);
            $editCity->city_name=$request->city_name;
            $editCity->save();
            return back()->with('success','city added successfully!');
        }
    

    希望对你有帮助!

    【讨论】:

    • 此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。发生此错误。我没有使用资源控制器。但是在实现你的代码之后我得到了那个错误。
    • 在创建控制器时,您是否运行过这样的命令?:``` php artisan make:controller Admin\CityController --resource ``` 你应该将控制器创建为资源控制器,然后在你的路线是这样的:``` Route::resource('city', 'Admin\CityController'); ``` ps:确保在web.php中删除你的旧路由:``` Route::post('city/update/{id}','Admin\CityController@update')->name('city 。更新'); ```
    【解决方案3】:

    在创建控制器时,您是否运行过这样的命令?:

    php artisan make:controller Admin\CityController --resource
    
    

    您应该将控制器创建为资源控制器,然后声明它

    在你的路线中是这样的:

    Route::resource('city', 'Admin\CityController');  
    

    Ps:请务必在 web.php 中删除您的旧路由:

    Route::post('city/update/{id}','Admin\CityController@update')->name('city.update');
    

    【讨论】:

    • 问题用另一种方式解决。但我想学习你的方法。我没有创建资源控制器。它只 make:Admin\cityController 那么,如果我创建一个资源控制器,编辑、更新、删除的路径是否相同?我应该在删除和编辑按钮href中传递什么?
    • 是的。如果您想要执行密集的 CRUD 操作,最好将您的控制器声明为资源控制器。 Laravel 会自动为你创建 HTTP 动词。
    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2023-03-28
    • 2021-08-22
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多