2016-12-14 7 views
0

私は、チェックボックスタイプの入力を使用して選択された電子メールに招待状を送信するボタンを作成しようとしています。私は本当にそれを行う方法についてあなたの助けが必要です。
これは、ビューに私のコードです:チェックボックスを使用して複数の受信者に電子メールを送信するにはどうすればよいですか?

<form role="form" action="{{Extras::getEUserURLPath(Auth::user()->user_id, '/ajax/sendFriendsInvitation')}}" method="GET"> 
    <div class="row form-group" style="padding-left: 50px;"> 
     <?php $i=0 ?> 
     @if($friends) 
     @foreach($friends as $friend) 
     <?php $member = \App\User::find($friend); $i++;?> 
     @if (Auth::user()->user_id != $member->user_id) 
     <input type="checkbox" id="cb{{$i}}" value="{{ $member->user_id }}" name="mem[]"> 
     <label class="col-md-5 boxed" for="cb{{$i}}"> 
      {{isset($member->email) ? $member->email: ''}} 
     </label> 
     @endif 
     @endforeach 
     @endif 
    </div> 
    <div class="row form-inline" align="center" style="margin-left: -20%;"> 
     <button type="submit" value="Submit" class="btn btn-sm btn-success invitation" title="Send Invitation"><i class="fa fa-plus"></i> Add Friends</button> 
    </div> 
</form> 

と私はその後、私は唯一の電子メールを送信するためにも

public function sendFriendsInvitation(Request $request, $account, $group){ 
    $group = \App\Group::where('alias', 'LIKE', $group)->get(); 
    $muser = Extras::getUserInfo($group[0]->user_id); 

    $arde = \App\Email::where('type', '=', 'uinv')->get(); 
    $content = ""; 
    $subject = ""; 
    if ($arde->count() > 0) { 
     $content = $arde[0]->content; 
     $subject = str_replace(array('$resort_name', '$event_name'), array($resortName, $groupName),$arde[0]->subject); 
    } else { 
     $subject = 'Welcome to ' . $resortName . '! |' . $groupName; 
     $content = view('emails.content.content-of-friends-registration'); 
    } 

    $access_info = '<p>Just follow the link below to accept your invitation. </p>'; 
    $access_info .= '<p>Click <a href="#">here</a> and use your email ('.$muser->email.') to register.</p>'; 

    $keywords = [ 
    'firstname' => $muser->first_name, 
    'resort_name' => $resortName, 
    'group_name' => $groupName, 
    'access_info' => $access_info 
    ]; 
    $ar_key = array(); 
    $ar_val = array(); 
    foreach ($keywords as $key => $value) { 
     $ar_key[] = "$".$key; 
     $ar_val[] = $value; 
    } 
    $contation = str_replace($ar_key, $ar_val, $content); 

    $mdata = array(
     'event_group_name' => $event_group->name, 
     'firstname' => $muser->first_name, 
     'lastname' => $muser->last_name, 
     'email' => $muser->email, 
     'code' => $muser->activation_code, 
     'utype' => "member", 
     'resort_name' => $resortName, 
     'group_name' => $groupName, 
     'created_by' => $request->input('first_name') . " " . $request->input('last_name'), 
     'company_email' => $owner->email, 
     'company_phone' => $owner->phone, 
     'company_website' => "", 
     'logo_img' => Extras::getMeta('logo', '\App\GroupMeta', $group[0]->group_id), 
     'header_img' => asset('storage/images/banner/' . $banner), 
     'social_fb' => Extras::getMeta('social_fb', '\App\GroupMeta', $group[0]->group_id), 
     'social_tw' => Extras::getMeta('social_tw', '\App\GroupMeta', $group[0]->group_id), 
     'social_insta' => Extras::getMeta('social_insta', '\App\GroupMeta',$group[0]->group_id), 
     'content' => $contation 
     ); 

    $m_email = $muser->email; 
    $m_fname = $muser->first_name; 
    $m_lname = $muser->last_name; 

    Mail::send('emails.content.friends-registration', $mdata, function ($message) use ($owner, $m_email, $m_fname, $m_lname, $resortName, $groupName) { 

     $message->from($owner->email, $resortName)->to($m_email, $m_fname . ' ' . $m_lname)->subject('Welcome to ' . $resortName . '! |' . $groupName); 

    }); 
    return response()->json(['response' => true]); 
} 
+0

メール法「から」値の配列を受け付けます。だから、あなたがクリックして確認する入力のIDから、彼らの電子メールを取得し、それらを配列に入れることができます。 例:$ m_email = ['[email protected]'、 '[email protected]']; –

+0

ご返信ありがとうございます。 $ mdataにどのように置くべきですか?申し訳ありませんが、これは私のコードではありません。私はちょうどこれを基礎として使っていました。これは私が今使っているものですが、どうやって作るのか分かりません。 –

+0

ああ、私は 'user_id'が' $ muser = Extras :: getUserInfo($ group [0] - > user_id); 'sendFriendsInvitation'に使われると思っていましたが、' –

答えて

0

あなたは、チェックボックスを使用したい場合はsendFriendsInvitationを追加すると思います入力エレメントを次のように変更することができます:

<input type="checkbox" id="cb{{$i}}" value="{{ $member->email }}" name="mem[]"> 

「user_id」から「email」に変更できます。

そしてPHPの方法「sendFriendsInvitation」があってもよい。

public function sendFriendsInvitation(Request $request, $account, $group){ 

$mails = []; 

foreach($request->mem as $key => $val){ 
    $mails[] = $val; 
} 


Mail::send('emails.content.friends-registration', $mdata, function ($message) use ($owner, $m_email, $m_fname, $m_lname, $resortName, $groupName) { 

     $message->from($owner->email, $resortName)->to($mails, $m_fname . ' ' . $m_lname)->subject('Welcome to ' . $resortName . '! |' . $groupName); 

    }); 


} 
+1

'のまま残しておくことができます。追加: $ mails = []; foreach($ request-> memは$ key => $ val){ $ mails [] = $ val; } –