【问题标题】:Laravel route not defined error when it is clearly defined明确定义时,Laravel route not defined 错误
【发布时间】:2020-06-20 21:39:27
【问题描述】:

我正在尝试使用 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>

web.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();
    }
}

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    使用这个命令

    php artisan optimize
    

    【讨论】:

    • 这拯救了我的一天
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        像这样更改您的路线文件

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

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

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

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

        【讨论】:

          【解决方案5】:

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

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

          更多信息请参见doucmentation

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:
              Route::post('/become-a-customer', 'BecomeACustomerFormController@postBecomeACustomer')->name('become-a-customer');
              

              【讨论】:

                猜你喜欢
                • 2015-02-20
                • 2019-01-06
                • 2021-11-25
                • 2019-06-09
                • 2017-07-04
                • 1970-01-01
                • 2019-06-21
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多