Так что я убил целый день, пытаясь сделать что-то, что потребовало бы кого-то, кто на самом деле умеет писать php менее чем за 2 минуты. Расстраиваюсь, но я учусь, делая и пытаясь разобраться.
Я чувствую себя неудачником из-за того, что не получил это, но 8 часов и подсчета (да, я знаю, хромает) достаточно.
Может кто-нибудь сказать мне, что не так с этим уравнением …
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array( '<img src="$images_array"/>');
Это, вероятно, очевидно, но все, что мне нужно, это загрузить изображения из mysite.com/folder в массив $ values [‘options’].
Если я просто укажу путь к одному изображению, то оно будет отображаться (очевидно, потому что оно не зависит ни от чего другого).
Благодарю.
@hellcode
Извините за беспорядок в «комментарии» под вашим ответом. К сожалению, я не мог заставить это работать? Может быть, мне нужно предоставить больше контекста.
Изображения в папке будут использоваться как элементы-флажки в форме. Это был мой оригинальный код (не работает):
add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
if($field->id == 187){
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array( '<img src="$images_array"/>');
$values['use_key'] = true;
}
return $values;
}
Я добавил ваш код так:
add_filter('frm_setup_new_fields_vars', 'frm_set_checked', 20, 2);
function frm_set_checked($values, $field){
if($field->id == 187){
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array();
foreach($images_array as $image) {
$values['options'][] = '<img src="'.$image.'"/>';
}
$values['use_key'] = true;
}
return $values;
}
Но это не потянуло файлы к сожалению 🙁
Пытаться:
$dir = '../folder';
$images_array = glob($dir.'*.jpg');
$values['options'] = array();
foreach($images_array as $image) {
$values['options'][] = '<img src="'.$image.'"/>';
}
Ну, одной из проблем может быть то, что glob()
Функция использует текущий каталог, который может быть любым, если вы не используете chdir()
функция.
Одна вещь, которая определенно является проблемой, заключается в том, что вы используете glob()
возвращаемое значение, $images_array
, как строка. Потому что это массив, который не будет работать.
Вот то, что должно работать.
// Allowed image formats (also known as a "whitelist")
$allowedFormats = ['jpg', 'jpeg', 'gif', 'png'];
// Array for holding any found images
$foundImages = [];
// Get the real path from the relative path
$path = realpath('../folder');
if ($path === false) {
die('The path does not exist!');
}
// Open a folder handle
$folder = dir($path);
// Read what is in the folder
while (($item = $folder->read()) !== false) {
// .. is the parent folder, . is the current folder
if ($item === '..' or $item === '.') {
continue;
}
// Find the last dot in the filename
// If it was not found then not image file
$lastDot = strrpos($item, '.');
if ($lastDot === false) {
continue;
}
// Get the filetype and make sure it is
// an allowed format
$filetype = substr($item, $lastDot);
if ( ! in_array($filetype, $allowedFormats)) {
continue;
}
// Okay, looks like an image!
$foundImages[] = $item;
}
// Close the folder handle
$folder->close();