php VirtueMart mod - nitelikler dizisi ile sorunlarınız

2 Cevap php

Ben bir VirtueMart mod miras ve yanlış anlamaya olamaz. Müşteri bir ürün ve özellik (model #) seçer. Bu daha sonra da tam bir başka formda gönderilir. Bu formu gönderdiğinizde, ürün ve nitelik gönderilen e-posta dahil edilmelidir.

Şu anda, sadece ürün ile geliyor. Nitelik sadece "dizi" diyor. Ben niteliğini yazdırır satırı sildiğinizde ilginç parçasıdır, products_options_names yazdıracaktır. Yani ürün ve products_options_names hem çalışma olduğunu biliyorum. Özniteliği doğru çalışmıyor tek şeydir.

Here's what I believe to be the significant code. This is the page that has the form, so the attribute should already be passed to the form.

//Begin Adding of New features
//$productsimage = $product['productsImage'];
$productsname = $product['productsName'];
$attributes = $product['attributes'];
$products_options_name = $value['products_options_name'];

$arr_product_list[] = "<strong>Product Name:</strong> $productsname <br />";
$arr_product_list[] .= "<strong>Attributes:</strong> $attributes <br />";
$arr_product_list[] .= "<strong>Products Options Name:</strong> $products_options_name  <br />";
$arr_product_list[] .=  "---------------------------------------------------------------";

//End  Adding of New features

  } // end foreach ($productArray as $product)
?>

Above this, there is another section that has attributes:

 <?php
   echo $product['attributeHiddenField'];
   if (isset($product['attributes']) && is_array($product['attributes'])) {
   echo '<div class="cartAttribsList">';
    echo '<ul>';
    reset($product['attributes']);
    foreach ($product['attributes'] as $option => $value) {
?>

Herkes bana neyin yanlış olduğunu anlamaya yardımcı olabilir? Sorun özniteliği bu sayfada geçirilen değilse bu sayfada ya da eğer ben emin değilim.

TIA

2 Cevap

Sizin ilk parçacık potansiyel bir sorun içerir. Ayrıca dize birleştirme .= operatörü kullanmaya çalışırken Sen $arr_product_list dizisine yeni öğeler ekliyoruz. Henüz var olmayan bir dize eklemek için çalışıyoruz çünkü bu, tabii ki, PHP için kafa karıştırıcı.

Ben kodu niyet bir HTML parçacığını oluşturmak ve sonra aşağıdaki yapabileceğini dizi, bu eklemek için olduğuna inanıyorum:

$str = "<strong>Product Name:</strong> $productsname <br />";
$str .= "<strong>Attributes:</strong> $attributes <br />";
$str .= "<strong>Products Options Name:</strong> $products_options_name  <br />";
$str .=  "---------------------------------------------------------------";
$arr_product_list[] = $str;

Büyük olasılıkla bu konuda PHP hataları alıyoruz, ama belki de onlar bastırılır ediyoruz. Lütfen php.ini çift-kontrol ve error_reporting, display_errors, display_startup_errors ve log_errors ayarlarının doğru olduğundan emin olun.

Bu muhtemelen bu özel sorunu ile yardımcı olmak için çok geç olduğunun farkındayız, ama ben benzer bir sorun ile bu yazı üzerine umuduyla başkasının stumbles cevap veriyorum.

The reason you're seeing "Array" printed out, is because the value stored in $products with the key 'attributes' is actually an array. The value in $product['attributes'] is an array type, that you're storing into $attributes. This means that the $attributes variable is an array, and so when you try to concatenate it with this line:

$arr_product_list[] .= "<strong>Attributes:</strong> $attributes <br />";

tercüman Array nesne seri hale nasıl bilmiyor, bu yüzden biz tespit ettik gibi nesnenin türünü, yazdırma için varsayılan, bir Array olduğunu.

$ Için bakım dizi niteliklerini sadece tek bir değer varsa, böyle bir şey ile dize bina önce bu değeri üzerinden toplamak isterim:

var $attributes = $products['attributes']; 
var $attributeValue = $attributes['my_target_value_key'];

** * ('My_target_value_key' Eğer çekin istediğiniz değerin önemli olduğu)

Sonra daha önce çalıştığınız gibi yapabilirsiniz kedi dışarı, sadece $ attributeValue ile dize $ özelliklerini değiştirin.

Kod ikinci blok, değeri ayarlanırsa denetler ve bu hat ile bir dizi türüdür görebilirsiniz çünkü çalışır:

 if (isset($product['attributes']) && is_array($product['attributes'])) {

Daha sonra bu hat ile dönen dizide her öğe aracılığıyla döngüsü:

 foreach ($product['attributes'] as $option => $value) {