Laravel动作未定义错误,但动作已在控制器中定义

时间:2018-12-10 13:50:59

标签: php url-routing laravel-5.7

我一直收到错误消息,该操作未在我的控制器中定义,但确实如此。我可以访问index操作,但不能访问processOrder操作。

下面是我的控制器和路线文件。

namespace App\Http\Controllers\ThirdPartyAPI;

use App\Order;
use App\ThirdPartyAPI;
use GuzzleHttp\Client;
use App\Jobs\ThirdParyOrders;
use App\ThirdParty\ThirdPartyAPI;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class OrdersController extends Controller
{
    public function index ()
    {
        // list orders
    }

    public function processOrder()
    {
        // some logic here
    }
 }

如果我在我的routes / web.php文件中将动作称为“ @index”,它可以工作并返回URL,但是如果我将“ @index”更改为“ @processOrder”,则会引发错误。

即。这有效:

Route::get('thirdparty/process-order', function() {
    return action('ThirdPartyApi\OrdersController@index');
});

但这不是:

Route::get('thirdparty/process-order', function() {
    return action('ThirdPartyApi\OrdersController@processOrder');
});

我不确定我在哪里错过情节。

我尝试退出然后重新运行:

php artisan serve

我也尝试过

composer dump-autoload

2 个答案:

答案 0 :(得分:0)

仍然不确定最初出现的问题是什么,但是我设法通过使用其他方法使其工作。 使用闭包,我这样做是这样的:

Route::get('thirdparty/{thirdparty_client}/process-order/{order}', 'ThirdPartyApi\OrdersController@processOrder');

这似乎可以解决问题。我不知道我可以通过这种方式将多个参数传递给控制器​​,但这可以100%工作。

答案 1 :(得分:0)

我认为您应该尝试将此作为路线。

Route::any("thirdparty/process-order", "ThirdPartyApi\OrdersController@processOrder");