Dir*_*v B 15 php drupal drupal-7
我用Google搜索,安装了Devel,Drupal for Firebug,但我找不到它.
我发现了我想要的东西,我知道它在哪里 ; 我只是不知道如何得到它.
我将它放在代码括号中,但是Devel告诉我文件名(我想要粘贴到.tpl.php文件中)在这里:
field_image (Object) stdClass
handler (Object) views_handler_field_field
view (Object) view
result (Array, 2 elements)
0 (Object) stdClass
_field_data (Array, 1 element)
nid (Array, 2 elements)
entity (Object) stdClass
field_image (Array, 1 element)
und (Array, 1 element)
0 (Array, 11 elements)
filename (String, 23 characters ) FILENAME.jpg
那么,我如何使用PHP输出FILENAME.jpg?
<?php print $something->other; ?>
Run Code Online (Sandbox Code Playgroud)
hak*_*kre 17
每当您需要从变量中读取值时,您需要知道需要制定哪个表达式来访问该值.
对于一个简单的变量值,这很简单,您只需获取变量名称并通过在其前面加上$符号来将其作为变量访问:
var_dump($variable);
Run Code Online (Sandbox Code Playgroud)
这在此处记录.
但是,这仅适用于像string或的简单数据类型integer.还有复合数据类型,即array和object.它们可以包含更多数据类型,无论是简单还是复合.您可以在PHP手册中学习如何访问数组的值以及如何从对象访问它们.我想你已经知道了一点,所以只是把它链接在这里.
当你了解到这一点后,你就可以将它结合起来.例如,如果对象中有一个数组,并且其中有一个您想要获得的字符串,则需要将$符号和变量名称与所需的访问器,属性名称和数组键组合在一起.然后你就得到了你的价值.您发布的数据显示您有一个具有其他对象和数组的对象,最后您会找到变量名称.
一些组合示例:
var_dump($variable->handler->view[0]->_field_data);
Run Code Online (Sandbox Code Playgroud)
这是基于您在上面提供的数据.$variable就是你开始,->用于访问需要被命名然后(例如,一个名称为变量)对象的成员:handler.正如您在调试输出中看到的那样handler,您需要再次使用它->来访问view它的成员.
现在view不同了,因为它是一个数组.您可以通过使用[]并将密钥放在那里来访问数组的值.我的例子中的关键是数字,0.并且由于该数组条目的值再次成为对象,因此在下一步中您需要->再次使用.
你可以继续这个游戏,直到你到达你感兴趣的元素.你已经拥有的调试输出可以帮助你编写返回值的表达式.可能是:
$field_image->handler->view->result[0]->_field_data['nid']['entity']->field_image['und'][0]['filename']
Run Code Online (Sandbox Code Playgroud)
但是我无法在我的系统上完整地验证这一点.
然而,当找到问题时,使用它是有帮助的,var_dump因为您可以逐步扩展表达式,直到找到元素.如果你犯了错误,你会立即看到.有时,die();在var_dump声明之后放置一个声明是有帮助的,以便在它包含许多其他数据之前不会结束响应,这些数据会隐藏您的信息.devel插件提供了额外的调试例程来转储突出显示的值.
如果这是你的对象:
field_image (Object) stdClass
handler (Object) views_handler_field_field
view (Object) view
result (Array, 2 elements)
0 (Object) stdClass
_field_data (Array, 1 element)
nid (Array, 2 elements)
entity (Object) stdClass
field_image (Array, 1 element)
und (Array, 1 element)
0 (Array, 11 elements)
filename (String, 23 characters ) FILENAME.jpg
Run Code Online (Sandbox Code Playgroud)
我猜你可以用它来找到它:
field_image->handler->view->result[0]->_field_data['nid'][entity]->field_image['und'][0]['filename]
Run Code Online (Sandbox Code Playgroud)
可能是一个错误,但一般的想法是:如果你有一个对象,使用变量->,如果你有一个数组,使用[key].
| 归档时间: |
|
| 查看次数: |
4029 次 |
| 最近记录: |