Условное действие Drupal с пользовательским php-кодом

При добавлении пользовательского php-кода для условного действия drupal/ubercart предоставляет две php-переменные ($order и $account), которые содержат информацию о заказе и учетную запись для только что завершенной проверки.

Я нигде не могу найти в Интернете документацию о том, как эти объекты структурированы... кто-нибудь знает, где эта документация или как эти объекты настраиваются???

Благодарность


person DrHeiter    schedule 23.12.2010    source источник
comment
Документации, похоже, не хватает... можете ли вы var_dump создать структуры в своей тестовой среде?   -  person brian_d    schedule 24.12.2010


Ответы (2)


Вот как выглядит объект $order при довольно стандартной установке (может немного отличаться в зависимости от вашей установки. Конечно, продукты в порядке определяют, как выглядит раздел элементов:

stdClass Object
(
    [order_id] => 123
    [uid] => 456
    [order_status] => payment_received
    [order_total] => 100
    [product_count] => 1
    [primary_email] => [email protected]
    [delivery_first_name] => Test
    [delivery_last_name] => Customer
    [delivery_phone] => 123-123-1234
    [delivery_company] => ABC Company, Inc.
    [delivery_street1] => 123 Easy St.
    [delivery_street2] => 
    [delivery_city] => Anytown
    [delivery_zone] => 39
    [delivery_postal_code] => 12345
    [delivery_country] => 840
    [billing_first_name] => Test
    [billing_last_name] => Customer
    [billing_phone] => 123-123-1234
    [billing_company] => ABC Company, Inc.
    [billing_street1] => 123 Easy St.
    [billing_street2] => 
    [billing_city] => Anytown
    [billing_zone] => 39
    [billing_postal_code] => 12345
    [billing_country] => 840
    [payment_method] => credit
    [data] => Array
        (
            [cc_data] => ***encrypted credit card data***
        )

    [created] => 1295455508
    [modified] => 1295457962
    [host] => 127.0.0.1
    [products] => Array
        (
            [0] => stdClass Object
                (
                    [order_product_id] => 245
                    [order_id] => 123
                    [nid] => 5
                    [title] => Test Product
                    [manufacturer] => 
                    [model] => TEST-PRODUCT-SKU
                    [qty] => 1
                    [cost] => 100.00000
                    [price] => 100.00000
                    [weight] => 0
                    [data] => Array
                        (
                            [attributes] => Array
                                (
                                )

                            [shippable] => 1
                            [module] => uc_product
                        )

                    [order_uid] => 456
                )

        )

    [payment_details] => 
    [quote] => Array
        (
            [method] => flatrate_1
            [accessorials] => 0
            [rate] => 7.00000
            [quote_form] => 
        )

    [line_items] => Array
        (
            [0] => Array
                (
                    [line_item_id] => subtotal
                    [type] => subtotal
                    [title] => Subtotal
                    [amount] => 100
                    [weight] => 0
                    [data] => 
                )

            [1] => Array
                (
                    [line_item_id] => 194
                    [type] => shipping
                    [title] => Flat Rate Shipping
                    [amount] => 7.00000
                    [weight] => 1
                    [data] => 
                )

        )

)
person UberSteve    schedule 25.01.2011

  • $account — это пользовательский объект.
  • $order — объект заказа ubercart.

Для обоих этих объектов существуют определенные минимальные значения, но на самом деле они могут содержать что угодно. Причина в том, что Drupal позволит модулям расширять объект пользователя, а ubercart позволит модулям расширять объект заказа.

Лучшее, что можно сделать в таких ситуациях, — это осмотреть объекты, чтобы понять, как добраться до того, что вам нужно.

Модуль devel позволит вам красиво распечатать переменные, используя dsm(), или выгрузить переменную в файл журнала, используя dd(). Это два способа получить информацию о переменной.

person googletorp    schedule 24.12.2010
comment
+1: dsm() или dpm() - это способ сделать это. Не существует единого источника документации о том, что находится в этих переменных, поскольку они могут быть изменены любым количеством хуков модуля. - person anschauung; 28.12.2010