Я получаю данные з одного сайта с помощью API. Это данные о погоде. Сейчас я вывожу только одно поле - температуру:
<?php
namespace Drupal\weather\Controller;
class
WeatherPage
{
public function getWeather($city)
{
$response = file_get_contents('http://api.openweathermap.org/data/2.5/weather?q='.$city.',uk&appid=32ae008b1c7259324aa50450687fabf5&units=metric');
$jsn = json_decode($response);
return [
'#markup' => $jsn->main->temp,
];
}
}?>
Но мне нужно отобразить еще такие поля на странице:
$jsn->main->pressure;
$jsn->main->humidity
Как переделать эту часть чтобы отобразить все нужные поля?:
'#markup' => $jsn->main->temp,
];
И как поместить $jsn->name в тег h1?
Комментарии
В начало файла:
<?php
namespace Drupal\weather\Controller;
use Drupal\Core\Render\Markup;
...
?>
и далее
<?php
...
$jsn = json_decode($response);
return [
'#markup' => Markup::create(
'<h1>' . $jsn->name . '</h1>' .
'<div>' . $jsn->main->temp . '</div>' .
'<div>' . $jsn->main->pressure. '</div>' .
'<div>' . $jsn->main->humidity. '</div>'
)
];
...
?>
PS. И, кстати, неплохо бы проверять, что вообще что-то получили в $response. Ну или хотя бы проверять отсутствие ошибок от json_decode() с помощью json_last_error() и что в конечном массиве есть требуемые ключи.
Спасибо большое! А вы можете подсказать как слева от значений написать слова вот так:
Температура: 18
Давление: 1020
Ветер: 59
?
И как сделать чтобы температура отображалась без запятых? А то сейчас отображается темпаратура 18.19 вместо 18, вот так:
У меня опять стойкое ощущение, что вы или прикалываетесь или троллите сообщество
Господи, прости меня, грешного:
<?php
... Markup::create(
'<h1>' . $jsn->name . '</h1>' .
'<div>Температура: ' . round($jsn->main->temp) . '</div>' .
'<div>Давление: ' . $jsn->main->pressure. '</div>' .
'<div>Ветер: ' . $jsn->main->humidity. '</div>'
)
...
?>
round()
Спасибо большое! Я не тролю. Я просто PHP практически не знаю. Так как в предедущих проектах разрабатывал на других языках програмированния.
Открою Вам страшную тайну:
<div>Температура: </div>
- это не PHP. Как можно "являться front-end разработчиком(javascript)" и не знать азов html - выше моего понимания.Хех. Я знаю что такое
<div>
и для чего оно. Но тот же<div>
находиться вMarkup::create ()
. А там уже синтаксис PHP. Который требует некотрых правил написания а значит встраивать тот же html нужно по-особому. Например требует точки.
и проблелов между ними. Теперь я уже знаю как нужно встраивать html в Markup::create (). На Front-end есть такая штука как JSX которая позволяет в JS встраивать html код. Смогли бы вы встроить html в JSX без знаний JSX? Так что не судите о моих знаниях в htmlСмогли бы, конкатенация строк есть и в JS, и в PHP.
Извините за прямоту, конечно, но обычно не бывает в жизни так, чтобы человек занимался front-end'ом, JS... etc "на нескольких проектах" и при этом не знал, как найти справочные сведения об элементарных строковых операторах пусть даже ему лично незнакомого, но очень популярного скриптового языка. По крайней мере - мне в это как-то с трудом верится.
И на этом фоне заявления о трудоустройстве "в Drupal-компанию сайтбилдером" звучат, мягко говоря, как-то неубедительно и вызывают либо улыбку, либо раздражение, либо и то и другое.
А в целом, как я уже писал выше, очень смахивает на троллинг.
И ещё одну страшную тайну открою: humidity это вовсе не ветер...
Кстати, да