Как получить или установить значение env, отличное от пользователя в Laravel Controller
Я пытаюсь установить некоторые из ENV
значения от пользователя заканчиваются динамически. Я хочу использовать несколько служб шлюза SMS, чтобы пользователь мог использовать любой из нескольких шлюзов. Несколько услуг имеют разные api
, sid
или же token
, Я сохраняю учетные данные этих поставщиков услуг в sms_gateways
таблица и пытается использовать эти учетные данные из этой таблицы вместо кода руки в методе контроллера. Но у меня возникают проблемы с использованием таким образом. Я пытаюсь что-то вроде этого -
public function storeSMS(Request $request)
{
$smsGateway = $request->smsgatewayname;
if ($smsGateway['value'] == 'Twilio') {
$twilio = SmsGateway::where('name', 'Twilio')->first();
//return $twilio->sid;
//*here I want to use $twilio->sid value inside env. Is it possible?
$sid = env( 'TWILIO_SID' );
$token = env( 'TWILIO_TOKEN' );
$client = new Client($sid, $token);
$request->validate([
'text'=>'required',
'contact'=>'required'
]);
$now = Carbon::now();
$datetime = explode(' ', $now);
$numbers_in_arrays = explode( ',' , $request->contact );
$message = $request->text;
$count = 0;
foreach( $numbers_in_arrays as $number )
{
$count++;
$client->messages->create(
'+'.$number,
[
'from' => env( 'TWILIO_FROM' ),
'body' => $message,
]
);
$outbox = new SmsOutbox();
$outbox->contact = '+'.$number;
$outbox->text = $message;
$outbox->send_date = $datetime[0];
$outbox->send_time = $datetime[1];
$outbox->is_send = 1;
$outbox->save();
}
}
return;
}
1 ответ
Там может быть более простой подход. Как насчет добавления двух полей с именами sid и token в таблицу sms_gateways.
Schema::table('sms_gateways', function (Blueprint $table) {
$table->string('sid');
$table->string('token');
})
Итак, из контроллера вы можете сказать что-то вроде:
$gateway = SmsGateway::where('name', $request->smsgatewayname)->first();
$client = new Client($gateway->sid, $gateway->token);
// Or you can also make it even simpler.
// $client = new Client($gateway);