IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Laravel PHP Discussion :

Mail | Markdown | Multiples Arrays | Foreach dans Blade [5.4]


Sujet :

Laravel PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2016
    Messages : 30
    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
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    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
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2016
    Messages : 30
    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 ▼
        +"email": "client_2.mage@webamazingapps.com"
        +"name": "Client Deux"
        +"title": "1"
        +"firstname": "Deux"
        +"lastname": "Client"
      }
      1 => Collection {#1793 ▼
        #items: array:2 [▼
          0 => {#1789 ▼
            +"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 ▼
            +"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
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    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
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2016
    Messages : 30
    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
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Cela donne quoi dans le fichier storage/log/laravel.log ?

+ Répondre à la discussion
Cette discussion est résolue.

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, 18h11
  2. Multiples pièces jointes dans un formulaire pour mail
    Par infovect dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2014, 16h45
  3. Smarty foreach dans un array javascript
    Par petitours dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 20/03/2014, 12h54
  4. multiples array dans un, combiner avec boucle while
    Par leymiris dans le forum Langage
    Réponses: 2
    Dernier message: 27/07/2010, 16h19
  5. Réponses: 4
    Dernier message: 14/09/2005, 17h23

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