Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2016
    Messages : 16
    Points : 5
    Points
    5

    Par défaut Mail | Markdown | Multiples Arrays | Foreach dans Blade

    Hello,

    Je souhaite passer mes donnees des arrays suivantes dans mon blade :

    La 1ere contient les donnees des clients.
    Les 2eme et 3eme, les donnees de 2 produits commandes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    array:5 [▼
      "email" => "client_1@test.com"
      "name" => "Client Un"
      "title" => "1"
      "firstname" => "Un"
      "lastname" => "Client"
    ]
    array:1 [▼
      "\x00*\x00items" => array:2 [▼
        0 => {#1734 ▼
          +"laboratory": "Boulanger"
          +"product_type": "Tarte"
          +"product_name": "Tarte fraises"
          +"serving_persons": "10 pers. | 34 cm"
          +"desserttextmessage": "Inscription produit 1"
          +"dessertdecorchocolateID": "Décoration chocolat et fruits souhaitée"
          +"dessertdecorflowerID": "Décoration petites fleurs souhaitée"
          +"portions": null
          +"weight": null
          +"assortment_1": null
          +"assortment_2": null
          +"assortment_3": null
          +"assortment_4": null
          +"color": null
          +"productprice": "66.00"
          +"productaddfee": "5.00"
          +"subtotal": "71.00"
        }
        1 => {#1737 ▼
          +"laboratory": "Boulanger"
          +"product_type": "Tarte-fine"
          +"product_name": "Pommes"
          +"serving_persons": "10 pers. | 34 cm"
          +"desserttextmessage": "Inscription Produit 2"
          +"dessertdecorchocolateID": "Décoration chocolat et fruits souhaitée"
          +"dessertdecorflowerID": "Décoration petites fleurs souhaitée"
          +"portions": null
          +"weight": null
          +"assortment_1": null
          +"assortment_2": null
          +"assortment_3": null
          +"assortment_4": null
          +"color": null
          +"productprice": "65.00"
          +"productaddfee": "5.00"
          +"subtotal": "70.00"
        }
      ]
    ]
    J'ai essaye ce foreach, mais elle provoque une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @foreach($contents as $content)
        @foreach($content['\x00*\x00items'] as $data)
            {{$data->laboratory}}
            {{$data->serving_persons}}
            {{$data->desserttextmessage}}
        @endforeach
    @endforeach
    Quelqu'un pourrait-il comment m'expliquer comment je peux recuperer les 2eme et 3eme arrays dans un foreach et me donner un example ?

    Merci d'avance.

    Marc

    CONTROLLER :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    # START SEND EMAIL TO X
     
    $customer = $_REQUEST['userID'];
     
    // dd($customer);
     
    $customerdata = DB::table('cms_users')
    					->leftJoin('users_r3_details','cms_users.id', '=', 'users_r3_details.userID')
    					->select('cms_users.email','cms_users.name','cms_users.email','users_r3_details.title','users_r3_details.firstname','users_r3_details.lastname')
    					->where('cms_users.id', '=', $customer)
    					->first();
     
    // dd($customerdata);
     
    $orderdata = DB::table('orders_detail')
    					->leftJoin('dessert_servings','orders_detail.dessertservingID', '=', 'dessert_servings.id')
    					->leftJoin('product_types','orders_detail.producttype_ID', '=', 'product_types.producttypeID')
    					->leftJoin('product_names','orders_detail.productname', '=', 'product_names.productname_ID')
    					->leftJoin('party_loaf_portions','orders_detail.ID_portion', '=', 'party_loaf_portions.portion_ID')
    					->leftJoin('party_loaf_weights','orders_detail.partyloafweightID', '=', 'party_loaf_weights.id')
    					->leftJoin('party_loaf_sandwiches_1','orders_detail.partyloafsandwich1ID', '=', 'party_loaf_sandwiches_1.id')
    					->leftJoin('party_loaf_sandwiches_2','orders_detail.partyloafsandwich2ID', '=', 'party_loaf_sandwiches_2.id')
    					->leftJoin('party_loaf_sandwiches_3','orders_detail.partyloafsandwich3ID', '=', 'party_loaf_sandwiches_3.id')
    					->leftJoin('party_loaf_sandwiches_4','orders_detail.partyloafsandwich4ID', '=', 'party_loaf_sandwiches_4.id')
    					->leftJoin('party_loaf_ribbons','orders_detail.partyloafribbonID', '=', 'party_loaf_ribbons.id')
    					->select('orders_detail.laboratory','product_types.product_type','product_names.product_name','dessert_servings.serving_persons','orders_detail.desserttextmessage','orders_detail.dessertdecorchocolateID','orders_detail.dessertdecorflowerID','party_loaf_portions.portions','party_loaf_weights.weight','party_loaf_sandwiches_1.assortment as assortment_1','party_loaf_sandwiches_2.assortment as assortment_2','party_loaf_sandwiches_3.assortment as assortment_3','party_loaf_sandwiches_4.assortment as assortment_4','party_loaf_ribbons.color','orders_detail.productprice','orders_detail.productaddfee','orders_detail.subtotal')
    					->where('orders_detail.orderID', '=', $id)
    					->get();
     
    // dd($orderdata);
     
    $orderconfuserdata = (array) $customerdata;
     
    $orderconforderdata = (array) $orderdata;
     
    // dd($orderconfuserdata,$orderconforderdata);
     
    $orderconfdatas = array_merge($orderconfuserdata, $orderconforderdata);
     
    // dd($orderconfdatas);
     
    $email = $customerdata->email;
    $copyto ='';
     
    // dd($email);
     
    try {
     
    	// Example : Mail::to($request->user())->cc($moreUsers)->bcc($evenMoreUsers)->queue(new OrderShipped($order));
    	// $orderconfuserdataArray,
    	Mail::to($email)->send(new CustomerConfOrder($orderconfdatas));
    	echo 'Commande et confirmation de commande expédiées avec succès';
     
    } catch (\Exception $e) {
     
    	echo 'Error - '.$e;
    	sleep(150);
     
    }
     
    # END SEND EMAIL TO X
    App\Mail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        public function __construct($content)
        {
            $this->content = $content;
        }
     
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this->from('info@webapp.ch')->markdown('emails.customer_conf_order') //pass here your email blade file
                ->with('content',$this->content);
        }
    Blade :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    @component('mail::message')
     
    @section('styles')
    	<link rel="stylesheet" type="text/css" href="{{ asset('assets/css/customer/customer.css') }}" >
    @stop
     
    {{-- Header --}}
    @slot('header')
        @component('mail::header', ['url' => config('app.url')])
    		<header>
    			<div bgcolor="#574632">
    			<!-- Logo -->
    				<div class="logo"><img src="public/logo/logo.png" alt="" width="220" height="119"></a></div>
    			<!-- /Logo -->
    			</div>
    	</header>
        @endcomponent
    @endslot
     
    {{-- Body --}}
    <body bgcolor="#F6E9DC">
     
    	<div class="row">
    		<div class="col-md-12">
    			<h2>Produit(s) commande(s)</h2>
    			<p>
    			Bonjour <strong>{{$content['title']}} {{$content['name']}}</strong>
    			<\p>
    			<p>
    			Vous venez d'effectuer une commande aupres de la X et nous vous en remercions. Nous realiserons votre commande et elle sera prete comme souhaitee le {{$content['deliverydate']}}.
    			<\p>
    			<p>
    				Ci-apres le recapitulatif de votre commande :
    			</p>
    			<p>
                Emplacement du foreach
    			</p>
    			<p>
    			Vous pouvez suivre le statut de votre commande dans votre espace personnel. Si vous soutaitez modifier votre commande, veuillez consulter votre commande dans le menu "Mes commandes", "Non traitees" et realiser les modifications souhaitees.
    			<\p>
    			<p>
    			Tant que la commande n'est pas prise en charge et en traitement, vous pouvez la modifier voire l'annuler.
    			<\p>
    			<p>
    			Meilleures salutations
    			<\p>
    			<p>
     
    			<\p>
    		</div>
    	</div>
     
    </body>
     
    {{-- Subcopy --}}
    @slot('subcopy')
        @component('mail::subcopy')
            <!-- subcopy here -->
        @endcomponent
    @endslot
     
    {{-- Footer --}}
    @slot('footer')
        @component('mail::footer')
    		<footer>
    			<div class="row" bgcolor="#9f815f">
    				<div class="col-md-12">
    					<div class="page-footer">
    						<h1>
    							<div style="text-align: center; color: #F6E9DC;"><p> </p></div>
    						</h1>
    					</div>
    				</div>
    			</div>
    		</footer>
        @endcomponent
    @endslot
     
    @endcomponent

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 821
    Points : 10 820
    Points
    10 820

    Par défaut

    Et si on commençait par quelque chose de simple.

    en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $orderconfuserdata = (array) $customerdata;
     
    $orderconforderdata = (array) $orderdata;
     
    // dd($orderconfuserdata,$orderconforderdata);
     
    $orderconfdatas = array_merge($orderconfuserdata, $orderconforderdata);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $orderconfdatas[] = $customerdata;
     
    $orderconfdatas[] = $orderdata;
     
    //on regarde ce que cela donne
     
    dd($orderconfdatas)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2016
    Messages : 16
    Points : 5
    Points
    5

    Par défaut Mail | Markdown | Multiples Arrays | Foreach dans Blade

    Hello @MaitrePylos,

    Merci pour ta suggestion. Cela me retourne pour les deux produits du panier une collection :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     0 => {#1777 &#9660;
        +"email": "client_2.mage@webamazingapps.com"
        +"name": "Client Deux"
        +"title": "1"
        +"firstname": "Deux"
        +"lastname": "Client"
      }
      1 => Collection {#1793 &#9660;
        #items: array:2 [&#9660;
          0 => {#1789 &#9660;
            +"laboratory": "Boulanger"
            +"product_type": "Tarte"
            +"product_name": "Tarte fraises"
            +"serving_persons": "2 pers. | 16 cm"
            +"desserttextmessage": "Inscription"
            +"dessertdecorchocolateID": "Décoration chocolat et fruits souhaitée"
            +"dessertdecorflowerID": "Décoration petites fleurs souhaitée"
            +"portions": null
            +"weight": null
            +"assortment_1": null
            +"assortment_2": null
            +"assortment_3": null
            +"assortment_4": null
            +"color": null
            +"productprice": "11.00"
            +"productaddfee": "5.00"
            +"subtotal": "16.00"
          }
          1 => {#1792 &#9660;
            +"laboratory": "Boulanger"
            +"product_type": "Tarte-fine"
            +"product_name": "Pommes"
            +"serving_persons": "2 pers. | 16 cm"
            +"desserttextmessage": "Inscription"
            +"dessertdecorchocolateID": "Décoration chocolat et fruits souhaitée"
            +"dessertdecorflowerID": "Décoration petites fleurs souhaitée"
            +"portions": null
            +"weight": null
            +"assortment_1": null
            +"assortment_2": null
            +"assortment_3": null
            +"assortment_4": null
            +"color": null
            +"productprice": "13.00"
            +"productaddfee": "5.00"
            +"subtotal": "18.00"
          }
        ]
      }
    ]
    Par contre comment je recupere ma collection dans mon foreach, comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @foreach($contents as $content)
    @foreach($content['Collection'] as $row)
        {{$row->laboratory}}
        {{$row->serving_persons}}
        {{$row->desserttextmessage}}
    @endforeach
    @endforeach

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 821
    Points : 10 820
    Points
    10 820

    Par défaut

    Potentiellement je m'arrangerais autrement, mais dans ce cas précis, je ferais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @foreach($contents as $content)
        @if (! $loop->first)
            @foreach($content as $row)
                {{$row->laboratory}}
                {{$row->serving_persons}}
                {{$row->desserttextmessage}}
            @endforeach
        @endif    
    @endforeach

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2016
    Messages : 16
    Points : 5
    Points
    5

    Par défaut Mail | Markdown | Multiples Arrays | Foreach dans Blade

    @MaitrePylos

    Merci pour ton retour, c'est a peu pres ce que j'ai essaye. Mais j'ai toujours

    Error - ErrorException: Invalid argument supplied for foreach() in /ho

    Erreur que je ne m'explique pas honnetement.., Peut-etre as tu deja rencontre une erreur de ce type ?

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 821
    Points : 10 820
    Points
    10 820

    Par défaut

    Cela donne quoi dans le fichier storage/log/laravel.log ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2016
    Messages : 16
    Points : 5
    Points
    5

    Par défaut

    @MaitrePylos

    Aucune erreur apres 10:00 ce matin dans le log, la il est 17:51, heure locale et j'ai fait mes derniers tests il y a moins d'une heure.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    4 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 4 821
    Points : 10 820
    Points
    10 820

    Par défaut

    ok

    Ceci alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $orderconfdatas[] = $customerdata->toArray();
     
    $orderconfdatas[] = $orderdata->toArray();
     
    //on regarde ce que cela donne
     
    dd($orderconfdatas)

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : septembre 2016
    Messages : 16
    Points : 5
    Points
    5

    Par défaut

    @MaitrePylos,
    Bien recu votre dernier message hier et je vous remercie. J'ai juste un souci avec la rupture d'un cable entre le Vietnam et Hong-Kong ou est mon serveur. Je dois installer mon app en local et je teste ensuite et je reviens vers vous pour vous donner un feedback.

Discussions similaires

  1. [PHP 7] PHP foreach dans array (pour au final générer tableau Excel)
    Par ClarusAD dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2019, 19h11
  2. Multiples pièces jointes dans un formulaire pour mail
    Par infovect dans le forum Formulaires
    Réponses: 1
    Dernier message: 12/07/2014, 17h45
  3. Smarty foreach dans un array javascript
    Par petitours dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/03/2014, 13h54
  4. multiples array dans un, combiner avec boucle while
    Par leymiris dans le forum Débuter
    Réponses: 2
    Dernier message: 27/07/2010, 17h19
  5. Réponses: 4
    Dernier message: 14/09/2005, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo