values - var_dump php
Capaz de ver una variable en la salida de print_r(), pero no estoy seguro de cómo acceder a ella en el código (9)
Busqué en Google, instalé Devel, Drupal para Firebug, pero no puedo encontrarlo.
Encontré lo que quiero, sé dónde está; Simplemente no sé cómo conseguirlo.
Pondré esto en corchetes de código, pero Devel me dice que el nombre del archivo (que quiero incluir en el archivo .tpl.php) está aquí:
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
Entonces, ¿cómo hago para que FILENAME.jpg sea enviado usando PHP?
<?php print $something->other; ?>
Déjame resumir
print_r($data); => Traditional view of printing array.
var_dump($data); => Not so much cleaned view , gives you everything but in very suffocated manner
print "<pre>"; print_r($data); => A cleaned view but will not get data types information.
dpm($data); => It gives you everything, but you need to have installed devel.
Debería usar field_view_field ($ entity_type, $ entity, $ field_name, $ display = array (), $ langcode = NULL), que devolverá una matriz renderizable. Puede consultar el documento de la API https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_view_field/7.x
Si este es tu objetivo:
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
Supongo que puedes encontrarlo usando:
field_image->handler->view->result[0]->_field_data[''nid''][entity]->field_image[''und''][0][''filename]
Podría ser un error allí, pero la Idea general es: si tiene un objeto, obtenga la variable usando ->
, y si tiene una matriz, use [key]
.
Si has desarrollado y probado
krumo ($variable);
Solo tenga en cuenta que, por defecto, solo los usuarios administradores tienen derecho a usar el comando krumo, pero esto se puede resolver mirando los permisos de la función DEVELAR. (no olvides eliminar estos permisos una vez que hayas terminado)
Si no puede usar el módulo de desarrollo por algún motivo, otras funciones útiles de "depuración" podrían ser var_export () y un contenedor Drupal drupal_var_export () . Estas funciones dan la salida como código PHP.
Siempre que necesite leer un valor de una variable, necesita saber qué expresión necesita formular para acceder a ese valor.
Para un valor variable simple, esto es simple, solo toma el nombre de la variable y acceda a ella como una variable prefijada con el signo $
:
var_dump($variable);
Esto está documentado aquí .
Sin embargo, esto solo funciona para tipos de datos simples como string
o integer
. También hay tipos de datos compuestos, a saber, array
y object
. Pueden contener otros tipos de datos, ya sean simples o compuestos. Puede aprender en el manual de PHP cómo acceder a los valores de una matriz y cómo puede acceder a ellos desde un objeto . Creo que ya lo sabes un poco, así que solo por tenerlo vinculado aquí.
Cuando hayas aprendido sobre eso, puedes combinar esto. Por ejemplo, si hay una matriz dentro de un objeto y hay una cadena que le gustaría obtener, debe combinar el signo $
y el nombre de la variable con los descriptores necesarios, los nombres de propiedad y las teclas de matriz. Entonces obtienes tu valor. Los datos que ha publicado muestran que tiene un objeto que tiene otros objetos y matrices y al final encuentra el nombre de la variable.
Algunos ejemplos de combinación:
var_dump($variable->handler->view[0]->_field_data);
Esto se basa en los datos que proporcionó anteriormente. $variable
es donde comienza, ->
se usa para acceder a los miembros del objeto que necesitan ser nombrados a continuación (como un nombre para una variable): handler
. Como ha visto en su resultado de depuración, ese handler
es un objeto, necesita volver a utilizar ->
para acceder al miembro de la view
.
Ahora la view
es diferente porque es una matriz. Puede acceder a los valores de una matriz utilizando []
y poniendo la clave allí. La clave en mi ejemplo es un número, 0
. Y como el valor de esa entrada de matriz es un objeto nuevamente, en el siguiente paso debe usar ->
nuevamente.
Puedes continuar este juego hasta que llegues al elemento que te interesa. El resultado de depuración que ya tienes te ayuda a escribir la expresión que devuelve el valor. Posiblemente es:
$field_image->handler->view->result[0]->_field_data[''nid''][''entity'']->field_image[''und''][0][''filename'']
Pero no puedo validar eso aquí en mi sistema completo.
Sin embargo, cuando descubra cosas, es útil usar var_dump
ya que podría ampliar paso a paso la expresión hasta que encuentre el elemento. Si comete un error, lo verá de inmediato. A veces ayuda colocar un die();
después de la instrucción var_dump
para no finalizar la respuesta antes de que contenga muchos otros datos que ocultarán la información. El complemento devel ofrece rutinas de depuración adicionales para volcar valores destacados.
Supongamos que tiene un objeto nodo en $ nodo. Puede imprimir sus valores muy bien con:
dpm($node); // remember this function is declared in devel module
Luego puede ver la información de $ node y expandir los campos internos con un clic. Y con un doble clic en el campo, puede ver su ruta php.
Obtendrás este resultado:
¡Espero que ayude!
PD: Supongo que esta funcionalidad no está disponible en dpm de D6.
Tratar:
$field_image->handler->view->result[0]->_field_data[''nid''][''entity'']->field_image[''und''][0][''filename'']
<? print_r($something["other"]); ?>
(donde el otro es esto) así que el resultado es ''esto''