【问题标题】:Setting up Queue in Lumen Framework在 Lumen 框架中设置队列
【发布时间】:2016-03-02 08:39:15
【问题描述】:

我正在尝试使用流明页面中的指南在流明中设置队列: http://lumen.laravel.com/docs/queues

<?php

namespace App\Jobs;

use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Bus\SelfHandling;
use Illuminate\Contracts\Queue\ShouldQueue;

class BlastEmail extends Job implements SelfHandling, ShouldQueue
{
    public function sendEmail()
    {
        [...CODE TO SEND EMAIL...]
    }

    public function handle()
    {
        $this->sendEmail();
    }
}

在我的控制器中

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Jobs\BlastEmail;
use App\Models\Blast;
use App\Models\Subscriber;
use Illuminate\Http\Request;
use Validator;

class BlastsController extends BaseController
{
    public function queue(Request $request)
    {
        $job = (new BlastEmail($email,$request->input('content'),$request->input('title')));
        $this->dispatch($job);
    }
}

控制器.php

<?php

namespace App\Http\Controllers;
use Laravel\Lumen\Routing\Controller as BaseController;

class Controller extends BaseController
{
    //
}

BaseController.php

use Dingo\Api\Routing\Helpers;
use Illuminate\Routing\Controller; 
use Cartalyst\Sentinel\Native\Facades\Sentinel;

class BaseController extends Controller {
     function someFunctionThatOtherGuyWrote()
     {
        // Some code that other guy wrote
     } 
}

我得到了

未定义方法 App\Http\Controllers\BlastsController::dispatch

我错过了什么吗?

【问题讨论】:

    标签: laravel laravel-5.1 lumen laravel-queue


    【解决方案1】:

    查看您的代码,您的 BlastsController 扩展了 App\Http\Controllers\BaseController 而不是 App\Http\Controllers\Controller

    您应该将其更改为将Controlller 类扩展为将class BlastsController extends BaseController 更改为class BlastsController extends Controller,因为该类最终将使用包含dispatch 方法的Laravel\Lumen\Routing\DispatchesJobs 特征

    编辑

    更新后您没有显示完整的BaseController 文件,但您似乎扩展了错误的类。你扩展Illuminate\Routing\Controller,你应该扩展App\Http\Controllers\Controller

    【讨论】:

    • 我在 BaseController.php 中得到了“BaseController extends Controller”。我相信它应该可以正常工作?
    • @YansenTan 请在您的问题中加入BaseController.phpController.php
    • 我尝试了你的建议,我得到“不能使用 Laravel\Lumen\Routing\Controller 作为 BaseController,因为该名称已在 ... Controller.php 中使用”。 (我只是更新问题并添加我的 BaseController.php 和 Controller.php)。
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 2015-09-21
    • 1970-01-01
    • 2015-06-23
    • 2015-08-09
    • 2019-08-30
    • 2021-02-08
    • 2017-07-01
    相关资源
    最近更新 更多