我已经在web.php中定义了如下的控制器方法调用。如何用laravel web.php文件中的控制器方法定义事件?
Route::post('/order', '[email protected]');
我想在调用OrderController @ create方法时调用事件。我怎样才能做到这一点?我的活动电话是
event(new NewOrderAdded());
这是我的活动类。
class NewOrderAdded implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel('public-test-channel');
}
}
Controller类
class OrderController extends Controller
{
public function create(Request $request){
$order = new Order([
'user_id' => $request->get('user_id'),
'person_id' => json_encode($request->get('person_id')),
'date_of_booking' => $request->get('date_of_booking'),
'total_order_price' =>$request->get('total_order_price'),
'ticket_id' => json_encode($request->get('ticket_id')),
'timeslot' => $request->get('timeslot'),
'status' => 'pending',
'add_on_id' => json_encode($request->get('add_on_id'))
]);
$order->save();
event(new NewOrderAdded($order));
return response()->json(array('order_id'=>$order->id));
}
}
这里就是我想接收事件CLAS。 ViewBookings.vue
<script>
import moment from 'moment';
export default{
data(){
return{
users:[]
}
},
created:function(){
this.listen();
},
methods:{
listen(){
Echo.channel('public-test-channel')
.listen('NewOrderAdded', (data) => {
console.log("Event received");
});
}
}
}
</script>
我尝试这样的代码,但我不能接受ViewBookings.vue级赛事。请提出这里有什么问题。
只是把它从你的控制器 – usrNotFound
@usrNotFound,但如何? – Hitendra
选中此项,如何在控制器中分派事件:https://laravel.com/docs/5.5/events#dispatching-events – C2486