Как получить или установить значение env, отличное от пользователя в Laravel Controller - PullRequest
2 голосов
/ 19 июня 2019

Я пытаюсь установить некоторые из 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 Ответ

0 голосов
/ 20 июня 2019

Там может быть более простой подход. Как насчет добавления двух полей с именами 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...