2016-11-14 19 views
0

lumanの新機能laravel。luman laravelのイベントをリスナーに呼び出すには?イベントをluman laravelのリスナーに呼び出す方法は?

私のイベントファイル:SendMail.php

<?php 
namespace App\Events; 
use App\Events\Event; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class SendMail extends Event 
{ 
    use SerializesModels; 
    public $userId; 
    public function __construct($userId) 
    { 

       $this->userId = $userId; 

    } 
    public function broadcastOn() 
    { 
     return []; 
    } 
} 

私のリスナーファイル:SendMailFired.php

<?php 
namespace App\Listeners; 

use App\Events\SendMail; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

use Event; 
class SendMailFired 
{ 

    public function __construct() 
    { 



    } 
    public function handle(SendMail $event) 
    { 


       $to = "[email protected]"; 
      $subject = "HTML email"; 

      $message = " 
      <html> 
      <head> 
      <title>HTML email</title> 
      </head> 
      <body> 
      <p>This email contains HTML Tags!</p> 
      <table> 
      <tr> 
      <th>Firstname</th> 
      <th>Lastname</th> 
      </tr> 
      <tr> 
      <td>John</td> 
      <td>Doe</td> 
      </tr> 
      </table> 
      </body> 
      </html> 
      "; 

      // Always set content-type when sending HTML email 
      $headers = "MIME-Version: 1.0" . "\r\n"; 
      $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

      // More headers 
      $headers .= 'From: <[email protected]>' . "\r\n"; 
      $headers .= 'Cc: [email protected]' . "\r\n"; 
      if(mail($to,$subject,$message,$headers)){ 
       return "success"; 
      }else{ 
       return "fail"; 
      } 

     } 
    } 

私のイベント・サービス・プロバイダーのファイル:

<?php 

namespace App\Providers; 
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; 
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; 
class EventServiceProvider extends ServiceProvider 
{ 
    protected $listen = [ 

     'App\Events\SendMail' => [ 
      'App\Listeners\SendMailFired', 
     ], 
    ]; 
    public function boot(DispatcherContract $events) 
    { 


     parent::boot($events); 
    } 
} 

私のコントローラファイル:Emailtestcontroller .php

<?php 
namespace App\Http\Controllers\Email; 
use App\Http\Requests; 
use Illuminate\Http\Request; 
use Event; 
use App\Events\SendMail; 
use App\Http\Controllers\Controller; 

use Illuminate\Events\Dispatcher; 



class EmailControllertest extends Controller 
{ 
    public function __construct() 
    { 
     //$this->middleware('auth'); 
    } 
    public function exam() 
    { 
     Event::fire(new SendMail(2)); 
     return view('home'); 


    } 
} 

私のルートファイル:

$app->post('/email', 'Email\[email protected]'); 

私にはわからないが、これは正しい方法やnot.evenコントローラの複数のフォルダ構造を使用しています。提案を歓迎します。事前にお越しいただきありがとうございます。

答えて

0

これをルーメンで試してみてください。

\Illuminate\Contracts\Event\Dispatcher in the controller 
関連する問題