Я пытался заполнить свое раскрывающееся меню именами файлов из каталога, я искал статьи здесь, в SO, в отношении этого запроса. Я нашел несколько ответов и попробовал их, но ни один из них не работает, и я считаю странным, потому что они были выбраны в качестве ответов и некоторые из них имеют Высокие голоса, берут эту статью, например, это одна из ссылок, которые я пробовал, но кажется, что она не работает для меня
Вот мой код, основанный на ссылке, которую я предоставил
<select name="templ" class="form-control input-sm">
<?php
foreach(glob(dirname(__FILE__) . '/els-content/*') as $filename){
$filename = basename($filename);
echo "<option value='" . $filename . "'>".$filename. </option>";
}
?>
</select>
это не возвращает никаких значений вообще. В чем может быть проблема?
Привет, хорошо, поэтому я смог ответить на свой вопрос из-за того, что @bobdye указал, okayyy, я режусь на погоню, вот как это было решено
dirname(FILE) . '/els-content/*'
возвращает текущий каталог плюс строка '/els-content/*'
которой связана моя проблема с файлами из els-контента, не отображается в моем раскрывающемся списке, поэтому я использовал echo
чтобы проверить, что это значит, и я обнаружил, что он возвращает что-то вроде это
Users/WhosPC/Desktop/cms_form/myPadmin/els-content/*
в котором els-content
FOUND OUTSIDE myPadmin
означает, что els-content
находится на том же уровне, что и my myPadmin
поэтому я использовал chdir()
затем использовал getcwd()
внутри переменной
так что это выглядит так:
<?php
chdir('../');
$s = getcwd();
?>
<select name="templ" class="form-control input-sm">
<?php
foreach(glob($s . '/els-content/*') as $filename){
$filename = basename($filename);
echo "<option value='" . $filename . "'>".$filename."</option>";
}
?>
</select>
хотя я не уверен, что chdir('../')
и getcwd()
достаточно надежны для такого рода задач. Когда этот cms-ребенок находится в реальном мире и работает
не стесняйтесь критиковать этот сценарий, чтобы я мог улучшить это
ОБНОВЛЕННЫЙ КОД
$s = realpath(getcwd()."/..");
foreach(glob($s . '/els-content/*') as $filename){
$filename = basename($filename);
echo "<option value='" . $filename . "'>". $filename."</option>";
}
Ок, я не удалял 1-ю версию моего кода, чтобы пользователи, которые спотыкались на этот пост, могли видеть разницу 1-го и 2-го кода, которые @prodigitalson указали на мой 1-й фрагмент кода
$s = realpath(__DIR__ .'/../els-content');
или dirname(__FILE__)
вместо __DIR__
постоянной. Хотя вы хотели бы проверить, что realpath
успешно вернул значение.
$s = realpath(__DIR__ .'/../els-content/'); foreach(glob($s . 'single-*.{php,html}', GLOB_BRACE) as $filename){ $filename = basename($filename); $bs = substr($filename, 0, strrpos($filename, '.')); $bs = substr($bs,-5); echo "<option value='" . $filename . "'>".ucfirst($bs)."</option>"; }