繁体   English   中英

明确定义时,Laravel route not defined 错误

[英]Laravel route not defined error when it is clearly defined

我正在尝试使用 laravel 处理基本表单,并且遇到了一个问题,即未检测到我的 POST 路由并导致刀片模板中出现路由未定义错误。 我的目标是解决此错误并将表单发布到控制器,然后使用 $request 参数访问各种表单字段。

这是错误: Route [become-a-customer] not defined.

我感谢有关如何解决此问题的任何建议。

形式

<form action="{{ route('become-a-customer') }}" method="post" class="col-md-8 offset-md-2">
    <div class="form-row">
        <div class="form-group col-md-6">
            <label for="first_name">First Name</label>
            <input name="last_name" type="email" class="form-control" id="first_name" placeholder="First Name">
        </div>
        ...
    </div>
    <input type="hidden" name="_token " value="{{ Session::token() }}"/>
    <button type="submit" class="btn">SUBMIT</button>
</form>

网页.php

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer');

成为客户控制器。 php

class BecomeACustomerFormController extends Controller
{
    public function postBecomeACustomer(Request $request)
    {
        $firstName = $request['first_name'];
        $lastName = $request['last_name'];
        ...
        ...
        return redirect()->back();
    }
}
Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');

在您的刀片模板中,您已将命名路由用于表单操作,但未在路由文件 (Web.php) 中指定。

像这样更改您的路由文件

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');

或者,您必须像这样更改表单操作

action="{{ url('become-a-customer') }}"

使用命名路由是 Laravel 项目的最佳实践。

您还可以定义如下,其中“as”键用于命名您的路线

Route::post('/become-a-customer',  ['uses' => 'BecomeACustomerFormController@postBecomeACustomer', 'as' => 'become-a-customer']);

检查您的 Apache 或 Nginx 配置。 有时,从 https 重定向到 http 会将方法从 POST 更改为 GET。

我建议通过相同的 Route 为 GET 设置一个临时端点,并在其中放置一个dd()语句来测试理论。

route()方法使用未定义的路由名称。 您可以通过路线上的name()方法定义它,如下所示

Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');

有关更多信息,请参阅文档

对我来说url('routeName')代替了route('routeName')

使用这个命令

php artisan optimize

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM