2015-05-28 32 views
1

我正在設計一個模塊,接受「通知請求」,呈現它並通過電子郵件或短信傳遞它。經過幾次修改之後,我意識到,我基本上正在執行一個請求,一個控制器,傳遞參數和渲染視圖。我不應該使用Laravel控制器來處理非http請求

我打算做這樣的事情

App\Sms\Controllers\UserController.php。在這裏我會有getNewUser($user)。我將捕獲該輸出,並將其傳遞給我的SMS API。

我的問題是,是否有負面的東西我需要知道,從Illuminate\Routing\Controller.php繼承?

我能想到的一些例子包括必須隱藏/阻止這些路由被http命中。

我會打電話的東西控制器類似

$request = Request::create('api/items', 'GET', $params); 
return Route::dispatch($request)->getContent(); 

回答

0

這正是該命令總線是(不要與工匠命令混淆)。 http://laravel.com/docs/5.0/bus

這些允許您從應用程序中的任何位置觸發「命令」,並相應地處理該命令。

+0

我使用的命令總線觸發發送短信/電子郵件 - 但我還是想解決的「主題」和「消息」。 – mrwaim

+0

不確定你的意思?難道你不能僅僅將這些信息傳遞到你指定的地方嗎? – Wader

+0

我關注的部分是從路由say/add-user-notification/userid或/ delete-user-notification/userid獲取命令的正確數據(本例中爲用戶對象),以及爲命令獲取正確的視圖,然後通過短信或電子郵件發送數據。我應該使用route :: dispatch(/ add-user-notifcation)還是直接使用$ smsMessageStore-> getMessage('add-user-notification')來應對(或者什麼不好的事情發生)。我希望這有助於澄清它 – mrwaim

0

直接撥打Route::dispatch有兩個負面影響。

首先,你是失去了Route::getCurrentRoute(),所以你找不到你在哪個URL。這對我來說是一個很大的問題。

我落得這樣做

$this->router = new Router(app('events'), app()); $request = Request::create($url, 'GET'); Input::initialize($event->toArray()); $out = $this->router->dispatch($request)->getContent();

這樣,我getCurrentRoute未受影響。

其次,調用堆棧獲得深 - 你可以打100 Xdebug的極限 - Increasing nesting function calls limit

相關問題