Создал экшн:
public function actionFeed()
{
$products = Product::find()->all();
\Yii::$app->response->format = Response::FORMAT_XML;
\Yii::$app->response->headers->add('Content-Type', 'text/xml');
return $this->renderPartial('merchant', [
'products' => $products,
]);
}
Сознал вид:
use yii\helpers\Html;
use yii\helpers\Url;
?>
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="/css/doc.css"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Manufacture17</title>
<description>Интернет-магазин тканей</description>
<link>https://manufacture17.com.ua</link>
<?php foreach ($products as $product): ?>
<item>
<link><?= Html::encode(Url::to(['slug-product', 'slug' => $product->slug])) ?></link>
<g:id><?= $product->code ?></g:id>
<g:price><?= $product->price_new ?> UAH</g:price>
<g:condition>new</g:condition>
<g:availability>in_stock</g:availability>
<g:product_type><?= $product->category->name ?>></g:product_type>
<g:image_link><?= $product->mainPhoto->getThumbFileUrl('file', 'large') ?></g:image_link>
<title><?= $product->name ?></title>
<description><?= $product->description ?></description>
</item>
<?php endforeach; ?>
</channel>
</rss>
Вроде как все хорошо и открывается, но фид идет между тегами response в одну строку, а в исходном коде все '<' и '>' отображаются как
'<' и '>'
Может быть робот GoogleMerchant и схавает, но как-то не красиво... и непонятно - почему не обычная структура, а тупо строка