Всем привет, прошу помочь в решение очень сложного вопроса (Мучаюсь с ним уже 4 дня).
Суть вопроса: Есть несколько функций, которые собирают данные со страницы объединяют их в третий функции и выводят массивами в нужных местах. Но есть одно но - Данные не хотят выводится выше функций, в которых он передаются.
Получаю данные вот так (код 1):
$APPLICATION->SetTitle("h1 документа");
$APPLICATION->SetPageProperty("title", "Тайтл");
$APPLICATION->SetPageProperty("description", "Описание");
Обрабатываю и объединяю для вывода вот так:
// Получаем тег H1 траницы и отправляем в SetMeta() и в ShowTitle($FALSE)
function SetTitle($H1){
$this->SetPageProperty('h1',$H1);
}
// Получаем title и description и отправвляем в GetPageProperty()
private $arr = [];
public function SetPageProperty($TYPE,$TAGS)
{
$this->arr['TAGS'][$TYPE]=$TAGS;
}
// Объединяем все функции в один массив и передаём в GetPagePropertyList($TYPE);
public function GetPageProperty(){
return $this->arr;
}
// Получаем все мета теги сайта и отправвляем в SetMeta()
public function GetPagePropertyList($TYPE){
//Получаем данные из БД
global $arItems,$arParams;
//Получаем данные из БД
$this->SetContent();
if($TYPE=='h1'){
return $this->arr['TAGS']['h1'];
}
if($TYPE=='title'){
return $this->arr['TAGS']['title'];
}
if($TYPE=='description'){
return $this->arr['TAGS']['description'];
}
}
Вывожу на страницу вот так:
H1 в HEAD
<h1><?=$APPLICATION->ShowTitle(false);?></h1>
TITLE в HEAD
<h1><?=$APPLICATION->ShowTitle(" ");?></h1>
description в HEAD
<h1><?=$APPLICATION->GetPagePropertyList('description');?></h1>
Ошибка заключается в том, что если вставляю код вывода данных после код_1 то всё работает, а если перед то нет. Мне нужно, что бы работало перед кодом_1
PHP 7.1
Прошу помощи, так как сам уже перепробовал все возможные варианты.
не пробовали с ob_star
ob_get_contents
?
Сам туплю)) поменял местами
ob_start();
echo '<p>код_1</p>';
$data = ob_get_contents();
ob_clean();
echo "<p>данные</p>";
echo $data;
код_1 выведется после вывода данных
Поместите нужное в переменную, где оно выводится гарантировано, а потом эту переменную выведите к показу там, где Вам нужно вывод сделать. Иного решения не будет - в этом случае, имхо.
Моё сообщение не является ответом на ваш вопрос, но уж сильно ваш метод режет глаза) По этому я его немного переписал:
public function getPagePropertyList($type)
{
return $this->arr['TAGS'][$type];
}
Не называйте переменные заглавными буквами, так принято называть константы. Не пользуйтесь глобальными переменными от них больше вреда чем пользы, и зачем вам вызов этого в функции?
/Получаем данные из БД
global $arItems,$arParams;
//Получаем данные из БД
$this->SetContent();
Так же название set используется для записи, а не для получения данных, для этого служит название get.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Недавно узнал о паттерне DTO, до этого в приложении мои методы возвращали массивы - и это был ад их рефакторитьТеперь понял, что этот паттерн...
есть такая форма
Всем приветНужно загружать 3 файла в форме, они хранятся в отдельной таблице
Всем доброго времени суток! Например, у меня на входе есть String date = "052018" (май 2018)