\Bitrix\Main\XmlWriter
, то с его помощью - никак.class AppXmlWriter extends XmlWriter
{
private $file = '';
private $charset = '';
private $tab = 0;
private $f = null;
private $lowercaseTag = false;
private $errors = array();
// конструктор скопирован, т.к. там все private
public function __construct(array $params)
{
if (isset($params['file']))
{
$server = \Bitrix\Main\Application::getInstance()->getContext()->getServer();
$this->file = $server->getDocumentRoot() . trim($params['file']);
// create new file
if (
isset($params['create_file']) &&
$params['create_file'] === true &&
is_writable($this->file)
)
{
unlink($this->file);
}
}
if (isset($params['charset']))
{
$this->charset = trim($params['charset']);
}
else
{
$this->charset = SITE_CHARSET;
}
if (isset($params['lowercase']) && $params['lowercase'] === true)
{
$this->lowercaseTag = true;
}
if (isset($params['tab']))
{
$this->tab = (int)$params['tab'];
}
}
public function prepareAttributes(array $attributes): string
{
$result = '';
if (empty($attributes)) {
return $result;
}
foreach ($attributes as $key => $value) {
$result .= sprintf(' %s="%s"', $key, $value);
}
return $result;
}
public function writeBeginTag($code, array $attributes = [])
{
if (!$this->f) {
return;
}
fwrite($this->f, str_repeat("\t", $this->tab) . '<' . $this->prepareTag($code) . $this->prepareAttributes($attributes) . '>' . PHP_EOL);
$this->tab++;
}
public function writeFullTag($code, $value, array $attributes = [])
{
if (!$this->f) {
return;
}
$code = $this->prepareTag($code);
$codeAttributes = $this->prepareAttributes($attributes);
fwrite($this->f,
str_repeat("\t", $this->tab) .
(
trim($value) == ''
? '<' . $code . $codeAttributes . ' />' . PHP_EOL
: '<' . $code . $codeAttributes . '>' .
$this->prepareValue($value) .
'</' . $code . '>' . PHP_EOL
)
);
}
}
Объекты DateTimeImmutable и DateTime можно сравнивать операторами сравнения.
class Foo
{
public function isGreaterThenNow(): bool
{
return $this->someDate > new DateTime();
}
}
чтобы это не выглядело костылемтогда проверять лучше не в ActiveRecord, а в спецификации какой-нибудь или ответсвенном объекте
.gitignore
/server/
/client/
/db/
git rm -r --cached server
git rm -r --cached client
git rm -r --cached db
git add .
if (YII_ENV_TEST) {
return true;
}
Yii::$app->apiService
# config/test.php
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/web.php'),
[
'id' => 'app-tests',
'components' => [
'apiService' => [
'class' => 'App\Fake\ApiService',
],
],
],
);
return $config;
# tests/integration.suite.yml
class_name: IntegrationTester
modules:
enabled:
- Asserts
- Yii2:
part: [orm, email, fixtures]
configFile: 'config/test.php'
git clone <ссылка на старый>
git remote add copy <ссылка на новый>
git push --all copy
white-space: pre-line
. Соответственно, white-space
можно менять в медиа запросе.<a href="#">Детское игровое и спортивное
оборудование</a>
.goods-cat__labels > a {
white-space: pre-line;
}
чуйка говорит, что через QA реалистичнее "ворваться". Что думаете?Думаю, это маркетинг.
Вообще, хотелось бы, конечно, выучить хорошо Excel, SQL и дэшборды делать какие-нибудь на первых порах:), но судя по всему требуется знать финанализ, опыт в бизнесе и маркетинге и тд, чего у меня нет.Это требуется тем, кто ставит задачи, а разработчикам лишь для ознакомления и не обязательно.
)">
после span
идут, href
не назначен (переменная вызывается, в которой массив, а ключ массива отсутствует и php не закрывается).<a href="<?=$arSection["SECTION_PAGE_UR"]?>" data-bx-app-ex-href="<?=$arSection["SECTION_PAGE_UR"]?>" class="section">
<div class="section__picture">
<?
$picture = SITE_TEMPLATE_PATH.'/img/no_photo.png';
if ($arSection["PICTURE"] != ""){
$picture = CFile::ResizeImageGet($arSection["PICTURE"], Array("height" => 175))["src"];
}
?>
<div style="background-image:url('<span id=" title="Код PHP: <?=$picture;?>" class="bxhtmled-surrogate">
<span class="bxhtmled-surrogate-inner"><span class="bxhtmled-right-side-item-icon"></span><span class="bxhtmled-comp-lable" unselectable="on" spellcheck="false">Код PHP</span></span>
</div>
<div class="section__icon">
<i class="far fa-sign-in"></i>
</div>
</div>
<div class="section__main">
<?=$arSection["NAME"];?>
</div>
</a>
</div>
<?
if ($s > 5)
break;
$s++;?> <?endforeach;?>
</div>
<?if (count($arSections) > 6):?>
<div class="button-line">
<a href="/katalog/" class="button button_black wstyle wstyle_white">Посмотреть все категории</a>
</div>
<?endif;?>
</div>
<?endif;?> <?
$iblock_id = 4;
$arServices = Array();
$arFilterE = Array("IBLOCK_ID" => $iblock_id, "ACTIVE" => "Y");
$arSelectE = Array("IBLOCK_ID", "ID", "NAME", "PREVIEW_PICTURE");
$rsElement = CIBlockElement::GetList(
Array("SORT"=>"ASC"),
$arFilterE,
false,
false,
$arSelectE
);
while($arElement = $rsElement->GetNextElement()){
$arFieldsE = $arElement->GetFields();
$arServices[] = $arFieldsE;
}
?> <?if (count($arServices) > 0):?>
<div class="block block_border">
<div class="title title_center">
Популярные услуги
</div>
<div class="row">
<?$s = 1;?> <?foreach ($arServices as $arService):?>
<div class="col-lg-4">
<a href="<?=$arService["DETAIL_PAGE_URL"]?>" data-bx-app-ex-href="<?=$arService["DETAIL_PAGE_URL"];?>" class="section section_wtitle">
<div class="section__picture">
<?
$picture = SITE_TEMPLATE_PATH.'/img/no_photo.png';
if ($arService["PREVIEW_PICTURE"] != ""){
$picture = CFile::ResizeImageGet($arService["PREVIEW_PICTURE"], Array("height" => 200))["src"];
}
?>
<div style="background-image:url('<span id=" title="Код PHP: <?=$picture;?>" class="bxhtmled-surrogate">
<span class="bxhtmled-surrogate-inner"><span class="bxhtmled-right-side-item-icon"></span><span class="bxhtmled-comp-lable" unselectable="on" spellcheck="false">Код PHP</span></span>
</div>
<div class="section__title">
<?=$arService["NAME"];?>
</div>
</div>
</a>
Одиакового ничего, идея скорее всего выводить по идексу в массиве
<?php foreach ($arItem['PROPERTIES']['IMG_BEFORE']['VALUE'] as $index => $arImgBeforeSrc): ?>
<?php $arImgAfterSrc = $arItem['PROPERTIES']['IMG_AFTER']['VALUE'][$index] ?>
<div class="cocoen">
<img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgBeforeSrc);?>" alt="">
<img data-src="" class="blog-list__item-image<?=($arParams['ROUNDED_IMAGE'] ? ' rounded' : '');?>" src="<?=CFile::getPath($arImgAfterSrc);?>" alt="">
</div>
<?php endforeach ?>
$arImgAfterSrc
проверку сделать. полноценной работе
я за честность в резюметолько не надо писать "не умею", лучше просто не упоминать
async function openModal(id = 0){
if(!id){
return;
}
const response = await fetch(`library.php?id=${id}`);
const responseText = await response.text();
// Дальше делайте манипуляции с модальным окном и полученными данными
}
он уже есть в самом html документебраузер разбирает HTML документ постепенно
js должен видетьэто в каком контракте написано?
почему если скрипт подключить в теге head то получим ошибку, а если внизу body то всё нормальнопотому что скрипт блокирующий и браузер выполняет его до того, как появляется H1
defer
указать браузеру, что выполнять скрипт нужно после построения DOM дерева