0

ルーメンページのガイドを使用して、ルーメンにキューを設定しようとしています: 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);
    }
}

Controller.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

私は何かが恋しいですか?

4

1 に答える 1

0

あなたのコードを見ると、あなたのBlastsControllerextendsApp\Http\Controllers\BaseControllerと not App\Http\Controllers\Controller.

このクラスは最終的にメソッドを含む特性を使用するため、Controlller変更するクラスを拡張するように変更する必要がありますclass BlastsController extends BaseControllerclass BlastsController extends ControllerLaravel\Lumen\Routing\DispatchesJobsdispatch

編集

更新後、完全なファイルは表示されませんでしBaseControllerたが、間違ったクラスを拡張しているようです。あなたは延長Illuminate\Routing\Controllerし、延長する必要がありますApp\Http\Controllers\Controller

于 2015-11-28T09:23:13.713 に答える