2016-10-06 7 views
1

ユーザーがアップロードしたすべての画像を取得し、画像URLやファイル名などの追加情報を追加するカスタムPHPフォームでアップロード管理ウィジェットを実装しようとしています。これらの追加データを電子メールでクライアントに送信することができます。私はフォームと電子メールテンプレートを正常に実装しました。問題は、私がフォームを送信すると、その結果の電子メールには1つのイメージに関する情報しか含まれていないということです。PHPフォーム変数のjquery uploaderによって作成されたすべての値をメールで送信するにはどうすればいいですか?

私が少し曖昧に思えるのであれば、アップロード管理ウィジェットによってアップロードされたすべての画像がリスト項目としてリストの中に挿入されているコードを見てください。私は中級レベルのjQueryの知識ではなく、常に起動が遅い少しを持って

require 'vendor/autoload.php'; 
$sendgrid = new SendGrid('send_grid_api'); 
$mail = new SendGrid\Email(); 

$name = "X"; 
$email = "[email protected]"; 
$fileurl = $_POST['fileurl']; 
$wlayer = $_POST['white-layer']; 
$alayer = $_POST['adhesive-layer']; 
$blayer = $_POST['block-layer']; 
$clayer = $_POST['clear-layer']; 

$msg = "White Layer: $wlayer, Adhesive Layer: $alayer, 
Blocking Layer:  $blayer, Clear Layer: $clayer. 
Download Link: $fileurl \n"; 

$recipient ="[email protected]"; 
$subject = "New Email"; 

$mail-> 
addTo($recipient)-> 
setFromName($name)-> 
setFrom($email)-> 
setSubject($subject)-> 
setText($msg); 

//Send Mail. 
if ($sendgrid->send($mail)) { 
    header('Location: /thank-you/'); 
} 
else{ 
    echo "failed"; 
} 

$ = uploadcare.jQuery; 
    function installWidgetPreviewMultiple(widget, list) { 
     widget.onChange(function(fileGroup) { 
     list.empty(); 
     if (fileGroup) { 
      $.when.apply(null, fileGroup.files()).done(function() { 

      $.each(arguments, function(i, fileInfo) { 
       // display file preview 
       var $filename = fileInfo.name; 
       var $fileurl = fileInfo.cdnUrl; 
       var $src = fileInfo.cdnUrl + '-/resize/100x100/filename.jpg'; 
       var $sendurl = $("<input>").attr("type","hidden").attr("name","fileurl").val($fileurl); 
       var $itemnu = 0; 
       list.append(
      $('<li class="thumb_list_item"><input type="hidden" name="items" id="items" value="' + $fileurl +'"><img src="' + $src+ '" alt="Image Preview">' + '<h4 class="filename">' + $filename + '</h4>' + '<div class="get-layer-wraper"><ul class="get-layer"><li class="layer-name"><label for="white-layer" class="layer-title">White Layer : </label></li><li><input id="white-layer" name="white-layer" class="layer" type="number" value="0"/></li><li>PX</li></ul><div class="clear"><ul class="get-layer"><li class="layer-name"><label for="adhesive-layer" class="layer-title">Adhesive Layer : </label></li><li><input id="adhesive-layer" name="adhesive-layer" class="layer" type="number" value="0"/></li><li>PX</li></ul><div class="clear"><ul class="get-layer"><li class="layer-name"><label for="block-layer" class="layer-title">Blocking Layer : </label></li><li><input id="block-layer" name="block-layer" class="layer" type="number" value="0"/></li><li>PX</li></ul><div class="clear"><ul class="get-layer"><li class="layer-name"><label for="clear-layer" class="layer-title">Clear Layer : </label></li><li><input id="clear-layer" name="clear-layer" class="layer" type="number" value="0"/></li><li>PX</li></ul></div></li>').appendTo(".thumb_list") 
      ); 

       list.append(
      $('<div>', {'class': 'layers'}).append($sendurl)     
     ); 



      }); 
      }); 
     } 
     }); 
    } 

そしてここでは、電子メールを送信するために使用私のmailer.phpです。だから誰も私にこれを手伝ってください。私が必要とするのは、ただ1つではなく、電子メール内のすべての画像URLとその他の情報を入力することです。

ありがとうございます。

答えて

1

メーラ部分 - hereはPHPのアップロードケアグループでの作業に関するドキュメントを見つけることができます。あなたがそれを通過したら、メッセージの本文にURLのリストを添付し、あなたの適切なmailer.phpは次のようになりますことがわかります。

<html> 
<head> 
<?php 
require_once 'vendor/autoload.php'; 
use \Uploadcare; 

//make sure you replace your key values here 
$sendgrid = new SendGrid('send_grid_api'); 
$api = new Uploadcare\Api('YOUR_PUBLIC_KEY', 'YOUR_SECRET_KEY'); 

$mail = new SendGrid\Email(); 
$name = "X"; 
$email = "[email protected]"; 


$group_id = $_POST['fileurl']; 
$wlayer = $_POST['white-layer']; 
$alayer = $_POST['adhesive-layer']; 
$blayer = $_POST['block-layer']; 
$clayer = $_POST['clear-layer']; 
$group = $api->getGroup($group_id); 
$group->store(); 
$files = $group->getFiles(); 
$msg = "White Layer: $wlayer, Adhesive Layer: $alayer, 
Blocking Layer:  $blayer, Clear Layer: $clayer \n"; 


for($i = 0; $i < count($files); $i++) { 

    $msg.=$files[$i]->getUrl().' \n'; 

    } 

$recipient ="[email protected]"; 
$subject = "New Email"; 

$mail-> 
addTo($recipient)-> 
setFromName($name)-> 
setFrom($email)-> 
setSubject($subject)-> 
setText($msg); 

//Send Mail. 
if ($sendgrid->send($mail)) { 
    header('Location: /thank-you/'); 
} 
else{ 
    echo "failed"; 
} 

?> 
</head> 

<body> 
</body> 

</html> 

最初の部分のために - - 私は、同様の質問に答えhere代わりに

<?php echo $api->widget->getInputTag('fileurl'); ?> 

そして、あなたがすべきフォームで送信している分野のコース名のの

<?php echo $api->widget->getInputTag('fileurl',array('data-multiple' => true)); ?>` 

:唯一の違いは、ウィジェットの初期化されPOSTステートメントのmailer.phpで取得しているものと一致します。

関連する問題