【问题标题】:Accessing a PHP stdClass Object in Javascript/Smarty在 Javascript/Smarty 中访问 PHP stdClass 对象
【发布时间】:2012-06-24 03:44:01
【问题描述】:

我有一个在 PHP 代码中初始化的 stclass 对象。 对象返回

object(stdClass)[238]
  public '0' => string 'Jun 20, 2012 03:02 PM' (length=21)
  public '1' => string 'Jun 20, 2012 03:26 PM' (length=21)
  public '2' => string 'Jun 21, 2012 01:12 PM' (length=21)

关于做 var_dum($myObjectName)

我将此传递给 smarty 模板,我需要在索引 [i] 处基于 javascript 变量访问 stdClass 对象的值。

我已经尝试了其中的几个:

{/literal} {$myObjectName}{literal} 
{/literal} {$myObjectName.0}{literal} 
{/literal} {$myObjectName.'0'}{literal} 
{/literal} {$myObjectName.'myLocalJSVariable'}{literal} 

但我无法在特定索引处获取对象的值

【问题讨论】:

    标签: php javascript smarty stdclass


    【解决方案1】:

    你试过{$myObjectName->0}吗?

    如果你想以你使用数组的方式使用它,你必须将对象的一个​​数组版本传递给Smarty:

    $smarty->assign('myObjectName', get_object_vars($obj));
    

    get_object_vars() 方法返回一个包含对象所有属性的命名数组。

    【讨论】:

    • 哪种解决方案?第一个,使用对象本身,或者第二个,将它作为数组传递?
    • 第一个...我需要在模板文件中使用 myObjectName->3 值。数字 3 是一个 javascript 变量,我将分配给代码,以便我访问对象成员的代码变为:{$myObjectName->javaScriptVariable}
    • PHP 中var_dump($yourObject) 的输出是什么?
    • object(stdClass)[238] public '0' => string 'Jun 20, 2012 03:02 PM' (length=21) public '1' => string 'Jun 20, 2012 03 :26 PM' (length=21) public '2' => string 'Jun 21, 2012 01:12 PM' (length=21) public '3' => string 'Jun 21, 01:25 PM' (length =21)
    • 好的,你用的是Smarty2还是Smarty3?
    【解决方案2】:

    我可以建议您使用json_encode() 将您的数据转储到 json,将其保存到 javascript 可访问的地方,然后从 javascript 访问您的数据吗?

    {$myObjectName->javaScriptVariable} 听起来就像您试图访问服务器上的某些客户端数据或客户端上的某些服务器数据 - 除非您提供数据,否则这是不可能的。

    【讨论】:

      【解决方案3】:

      你为什么不向 smarty 传递一个对你的对象的引用?

      $smarty->assign('myObjectName', &$obj);
      

      然后在 smarty 中你可以使用 {$myObjectName->whatever} 语法...

      【讨论】:

      • 除非您正在运行 PHP4,否则您不需要通过引用传递对象。
      猜你喜欢
      • 2010-11-22
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2023-03-15
      • 1970-01-01
      • 2013-01-25
      • 2014-09-24
      相关资源
      最近更新 更多