带有自定义 php 代码的 drupal 条件操作

Posted

技术标签:

【中文标题】带有自定义 php 代码的 drupal 条件操作【英文标题】:drupal conditional action with custom php code 【发布时间】:2011-05-30 03:15:07 【问题描述】:

为条件操作添加自定义 php 代码时,drupal/ubercart 提供了两个 php 变量($order 和 $account),它们保存有关刚刚完成的结帐的订单和帐户信息。

我无法在 Internet 文档中找到有关这些对象的结构的任何地方...任何人都知道此文档在哪里或这些对象是如何设置的???

谢谢

【问题讨论】:

似乎缺少文档...您能var_dump 测试环境中的结构吗? 【参考方案1】:

这是 $order 对象在相当标准的安装中的样子(根据您的安装可能会有所不同。当然,订单中的产品决定了 items 部分的样子:

stdClass Object
(
    [order_id] => 123
    [uid] => 456
    [order_status] => payment_received
    [order_total] => 100
    [product_count] => 1
    [primary_email] => test@example.com
    [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] => 
                )

        )

)

【讨论】:

【参考方案2】: $account 是用户对象。 $order 是 ubercart 订单对象。

这两个对象都有一些最低定义的值,但它们实际上可以包含任何东西。原因是,Drupal 将允许模块扩展用户对象,而 ubercart 将允许模块扩展订单对象。

在这种情况下,最好的办法是检查对象以确定如何获得所需的内容。

开发模块将允许您使用dsm() 漂亮地打印变量或使用dd() 将变量转储到日志文件中。这是获取变量信息的两种方式。

【讨论】:

+1: dsm() 或 dpm() 是这样做的方法。关于这些变量中的内容没有单一的文档来源,因为它们可能被任意数量的模块挂钩修改

以上是关于带有自定义 php 代码的 drupal 条件操作的主要内容,如果未能解决你的问题,请参考以下文章

将 PHP 错误记录到 Drupal 网站的自定义文件中

带有自定义模板暴露过滤器的 Drupal 7 视图不显示

使用自定义字段“PHP 代码”查看 Drupal 图像附加路径

使用 PHP 在自定义 Drupal 模块中设置 A-Z 栏

Drupal,在自定义 php 页面上嵌入视图块/结果

用于 Drupal 视图主题的 PHP