【问题标题】:UnexpectedValueException in Route.php line 639: Invalid route action: [App\Http\Controllers\PortfolioController]Route.php 第 639 行中的 UnexpectedValueException:无效的路由操作:[App\Http\Controllers\PortfolioController]
【发布时间】:2020-10-19 13:58:37
【问题描述】:

为什么会出现此错误。我创建了一个 PortfolioController。然后我用这个做了一条路线

Route::get('portfolio','PortfolioController');  

所以在我的控制器页面中我做了这个。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class PortfolioController extends Controller
{
  //This only gets exectued when we request /portfolio/Paintings using GET
    public function getPaintings()
    {
      return 'This RESTful controller is working!';
    }
}

我在输入 localhost/portfolio/paintings 时收到此错误

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    从您的代码外观来看,您似乎正在尝试设置implicit controller route。你很接近,但你的路线定义有点偏离。您需要使用controller 而不是get

    Route::controller('portfolio','PortfolioController');
    

    【讨论】:

    • 实际上我现在得到:Controller.php 第 269 行中的 NotFoundHttpException:找不到控制器方法。
    • 我找到了解决该问题的方法。我只需要通过 composer 安装 laravelcollective/html,方法是转到 cmd 提示符并输入“composer require laravelcollective/html”
    【解决方案2】:

    https://laravel.com/docs/5.3/upgrade#upgrade-5.3.0

    以下功能已在 5.2 中弃用,并将在 2016 年 6 月的 5.3 版本中删除:

    • 使用Route::controller 的隐式控制器路由已被弃用。请在您的路由文件中使用显式路由注册。这可能会被提取到一个包中。

    您现在必须声明每个端点。

    【讨论】:

      【解决方案3】:

      试试这个

      Route::get('portfolio','PortfolioController@getPaintings')

      【讨论】:

      • 请在您的答案中添加一些解释,以便其他人可以从中学习。见面,这看起来像是 Ryuujo 给出的答案的副本
      【解决方案4】:

      当web.php的文件有错误时,我得到了类似的错误。

      正确的路线应该是这样的Route::get('portfolio','YourController@yourMethod');

      【讨论】:

        【解决方案5】:

        您需要在 Route 上说明您的功能。 示例:

        Route::methods('your-uri','YourController@YourFunction');
        

        所以你应该这样做:

        Route::get('portfolio','PortfolioController@getPaintings');
        

        希望对你有帮助

        【讨论】:

          【解决方案6】:

          您必须使用控制器的功能,而不是为一个请求使用整个控制器类。所以 laravel 不知道要使用哪个函数。

          尝试使用PortfolioController@index。或Route::resource('yourroute','PortfolioController');

          【讨论】:

          • 因为那个Controller的功能只是getPaintings,所以我想用PortofolioController@getPaintings
          【解决方案7】:

          试试这个:Route::resource('/portfolio','PortfolioController'); 希望这会奏效

          【讨论】:

            【解决方案8】:

            在路线中使用此代码:

            Route::resource('portfolio','YourController@yourMethod');
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-08-09
              • 2019-02-20
              • 1970-01-01
              • 2018-11-05
              • 1970-01-01
              • 1970-01-01
              • 2018-10-10
              • 1970-01-01
              相关资源
              最近更新 更多